询问权限未显示在kitkat上

时间:2017-12-14 04:28:55

标签: android android-permissions

我正在学习运行时的请求权限。我的手机操作系统是kitkat。这是我的代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    ActivityCompat.requestPermissions(this, arrayOf("com.android.launcher.permission.INSTALL_SHORTCUT"), 1000)
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)

    if (requestCode == 1000) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //do something
        }
    }
}

但未显示权限对话框。我的代码中有错误吗?

4 个答案:

答案 0 :(得分:1)

您无法在 Android 6.0

下面询问运行时权限

在Android 6.0下方,用户安装应用时会授予所有权限

<强> FYI

  

从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而非在安装应用时授予

了解 runtime permission

答案 1 :(得分:1)

Kitkat(第20版)  或者以下版本的Android不需要运行时权限请求,您只需在AndroidManifest.xml文件中定义权限,这对于权限就足够了。

示例:<uses-permission android:name="android.permission.CAMERA"/>

<强> BUT

对于Lollipop(版本21)或更高版本,您需要添加方法来为您的应用程序请求权限。

答案 2 :(得分:0)

Android开发者网站引用,

  

在Android 6.0(API级别23)中,用户在应用程序运行时向应用程序授予权限,而不是在安装应用程序时。

在Android Marshmallow 中添加了运行时权限。 marshmallow之前的Android版本将在应用安装期间请求许可。

检查this以了解有关Android运行时权限的更多信息

答案 3 :(得分:0)

根据google developer page

  

从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而不是在安装应用时授予权限。

这意味着您的手机需要从API级别23请求运行时权限,即Marshmallow,而KitKat是API级别19。因此,操作系统不会询问运行时权限。