#kotlin #android-studio-3.0
#kotlin #android-studio-3.0
Вопрос:
я попытался установить проверку разрешений запроса 5 в своем коде
Конечно, я добавил все пять в манифест. и я также попытался удалить приложение и переустановить его.
но он вообще не запрашивает разрешения
это мой корневой класс
override fun onCreate(savedInstanceState: Bundle?) {
(...)
if (checkAndRequestPermissions()) {
Handler().postDelayed({
val intent = Intent(this, ActivityMain::class.java)
startActivity(intent)
}, SPLASH_TIME_OUT.toLong())
}
и метод checkAndRequestPermissions()
fun checkAndRequestPermissions(): Boolean {
val internetP = ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET)
val networkP = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE)
val wifiP = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE)
val changeWifiP = ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE)
val notifiacationP = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NOTIFICATION_POLICY)
val listPermissionsNeeded = ArrayList<String>()
if (internetP != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.INTERNET)
}
if (networkP != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_NETWORK_STATE)
}
if (wifiP != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_WIFI_STATE)
}
if (changeWifiP != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.CHANGE_WIFI_STATE)
}
if (notifiacationP != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_NOTIFICATION_POLICY)
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toTypedArray(), REQUEST_ID_MULTIPLE_PERMISSIONS)
return false
}
return true
}
if (checkAndRequestPermissions()) {
значение ‘checkAndRequstPermissions ()’ всегда равно true
Я думаю, что здесь есть проблема.
if (!listPermissionsNeeded.isEmpty()) {
даже если значение listPersmissionsNeeded равно ‘0’, оно продолжает возвращать true, никогда не заходя внутрь
Я ссылался на этот сайт ->
Ответ №1:
Все вышеупомянутые разрешения не требуют проверки и утверждения разрешений во время выполнения. Эти разрешения должны быть указаны только в файле манифеста.
Вот почему функция checkAndRequestPermissions()
всегда возвращает true .
Смотрите эту ссылку
https://developer.android.com/guide/topics/permissions/overview.html#normal-dangerous
Надеюсь, это поможет. Счастливого кодирования 🙂
Комментарии:
1. большое вам спасибо! я не думал об этом!
Ответ №2:
Кажется, что все разрешения уже предоставлены.Это не проблема в коде.
Потому что это обычные разрешения, поэтому нет необходимости обрабатывать проверку времени выполнения.
для опасных разрешений и групп разрешений требуются только обработчики разрешений среды выполнения.