я попытался установить проверку разрешений запроса 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()' всегда истинно
Я думаю, здесь есть проблема.
if (!listPermissionsNeeded.isEmpty()) {
даже если значение listPersmissionsNeeded равно «0», оно продолжает возвращать true, никогда не заходя внутрь
Я ссылался на этот сайт ->
Все вышеупомянутые разрешения не требуют проверки и утверждения разрешений во время выполнения. Эти разрешения должны быть упомянуты только в файле манифеста.
Вот почему функция checkAndRequestPermissions()
всегда возвращает значение true.
См. эту ссылку
https://developer.android.com/guide/topics/permissions/overview.html#нормально-опасный
Надеюсь это поможет. Удачного кодирования :)
Кажется, все разрешения уже даны. Проблема не в коде.
Потому что это Обычные разрешения, поэтому не нужно обрабатывать средство проверки времени выполнения.
опасные разрешения и группы разрешений требует только обработчиков разрешений во время выполнения.
v большое спасибо! я не думал об этом!