android studio请求权限错误(kotlin)

问题描述 投票:0回答:2

我试图在我的代码中设置请求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/

kotlin android-studio-3.0
2个回答
1
投票

上述所有权限都不需要运行时权限检查和批准。这些权限仅在清单文件中提及。

这就是为什么函数checkAndRequestPermissions()总是返回true。

看到这个链接

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

希望这可以帮助。快乐编码:)


0
投票

似乎已经给出了所有许可。这在代码中没有问题。

因为这些是Normal permissions所以不需要处理运行时检查器。

dangerous permissions and permission groups只需要运行时权限处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.