ошибка разрешения запроса Android studio (kotlin)

#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, никогда не заходя внутрь

Я ссылался на этот сайт ->

https://demonuts.com/kotlin-runtime-permissions/

Ответ №1:

Все вышеупомянутые разрешения не требуют проверки и утверждения разрешений во время выполнения. Эти разрешения должны быть указаны только в файле манифеста.

Вот почему функция checkAndRequestPermissions() всегда возвращает true .

Смотрите эту ссылку

https://developer.android.com/guide/topics/permissions/overview.html#normal-dangerous

Надеюсь, это поможет. Счастливого кодирования 🙂

Комментарии:

1. большое вам спасибо! я не думал об этом!

Ответ №2:

Кажется, что все разрешения уже предоставлены.Это не проблема в коде.

Потому что это обычные разрешения, поэтому нет необходимости обрабатывать проверку времени выполнения.

для опасных разрешений и групп разрешений требуются только обработчики разрешений среды выполнения.