Android-приложение не запрашивает разрешения при установке
Я работаю в отделе информационных технологий моего университета, и мы работаем над приложением, которое устанавливает правильную настройку для eduroam WiFi (возможно, вы слышали об этом).
Однако у меня проблема с запуском на моем собственном LG G4 с Android 6.0. При установке скомпилированного *.apk он не запрашивает никаких разрешений, хотя они установлены в AndroidManifest.xml. Он работал на всех предыдущих версиях Android.
Обязательно ли сейчас запрашивать разрешения во время выполнения?
2 ответа
Если ваша целевая версия SDK - 23, вам нужно запросить "опасные" разрешения во время выполнения.
Если это так, то вы сможете увидеть, что никакие разрешения не были предоставлены, если вы идете в Settings > Apps > "Your app" > Permissions
,
Если вы еще не хотите внедрять новую систему, вы можете уменьшить целевую версию SDK до 22, чтобы получить старую систему разрешений. Вы все еще можете скомпилировать с SDK версии 23, хотя.
Смотрите документацию для получения дополнительной информации.
Если вы хотите запрашивать разрешения во время выполнения, вы должны написать специальный запрос в вашем приложении. Что-то вроде этого:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
createPermissions();
}
public void createPermissions(){
String permission = Manifest.permission.READ_SMS;
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
if(!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
requestPermissions(new String[]{permission}),
SMS_PERMISSION);
}
}
}
Если пользователь работает под управлением Android 6.0 (уровень API 23) или более поздней версии, пользователь должен предоставить вашему приложению свои разрешения на время его запуска. Если вы столкнете пользователя с большим количеством запросов на разрешения одновременно, вы можете перегружать пользователя и заставить его закрыть ваше приложение. Вместо этого вы должны запрашивать разрешения по мере необходимости.
В некоторых случаях одно или несколько разрешений могут быть абсолютно необходимы для вашего приложения. Возможно, имеет смысл запросить все эти разрешения сразу после запуска приложения. Например, если вы создаете приложение для фотосъемки, приложению потребуется доступ к камере устройства. Когда пользователь запускает приложение в первый раз, он не удивится, если у него спросят разрешение на использование камеры. Но если в том же приложении была функция обмена фотографиями с контактами пользователя, вам, вероятно, не следует запрашивать разрешение READ_CONTACTS при первом запуске. Вместо этого подождите, пока пользователь попытается использовать функцию "совместного использования", и затем попросите разрешения.
Если ваше приложение предоставляет учебное пособие, возможно, имеет смысл запросить необходимые разрешения приложения в конце учебной последовательности.
Источник / ссылка https://developer.android.com/training/permissions/usage-notes