Я относительно новичок в программировании для Android. Пока что я работаю над приложением для обмена сообщениями, которое будет отправлять сообщения через SMS и иметь возможность добавлять к сообщению GPS-координаты. У меня проблема с SDK версии 23, разрешения необходимо запрашивать во время выполнения, и я не нашел хорошего примера, где я могу запросить необходимые разрешения перед запуском приложения. Пример кода, который у меня есть, приведен ниже.
Если я закомментирую этот раздел кода, Android Studio скомпилирует код, но у меня произойдет сбой приложения, когда я нажму кнопку, которая отправляет сообщение. У меня есть соответствующий код в моем AndroidManifest.xml для использования разрешений SMS и GPS.
if (ContextCompat.checkSelfPermission(MainActivity,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED)
{
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity,
Manifest.permission.SEND_SMS))
{
Toast.makeText(getBaseContext(),
"Foo Messenger requires permission to send SMS",
Toast.LENGTH_SHORT).show();
}
else
{
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(MainActivity,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
if (ContextCompat.checkSelfPermission(MainActivity,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED)
{
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity,
Manifest.permission.ACCESS_FINE_LOCATION))
{
Toast.makeText(getBaseContext(),
"Foo Messenger requires permission to access GPS to be able to send your coordinates",
Toast.LENGTH_SHORT).show();
}
else
{
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(MainActivity,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
OnClickListener
в том, что вы опубликовали в данный момент. - person CommonsWare   schedule 01.10.2015requestPermissions()
звонка? Если вы зайдете в Настройки › Приложения › (ваше приложение) › Разрешения, у вас есть разрешение на SMS? Находится ли ваш элемент<uses-permission>
в нужном месте? - person CommonsWare   schedule 02.10.2015requestPermissions()
звонка? - person CommonsWare   schedule 02.10.2015