我正在学习运行时的请求权限。我的手机操作系统是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
}
}
}
但未显示权限对话框。我的代码中有错误吗?
答案 0 :(得分:1)
您无法在 Android 6.0
下面询问运行时权限在Android 6.0下方,用户安装应用时会授予所有权限
<强> FYI 强>
从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而非在安装应用时授予
答案 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)
从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而不是在安装应用时授予权限。
这意味着您的手机需要从API级别23请求运行时权限,即Marshmallow,而KitKat是API级别19。因此,操作系统不会询问运行时权限。