android工作室请求权限错误(kotlin)
android studio request permissions error (kotlin)
我尝试在我的代码中设置请求 5 权限检查
当然,我将所有五个都添加到了清单中。
而且我也试过删除应用程序并重新安装它。
但它根本不询问权限
这是我的根class
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 的原因。
看到这个link
https://developer.android.com/guide/topics/permissions/overview.html#normal-dangerous
希望这对您有所帮助。快乐编码:)
似乎所有权限都已经given.Its在代码中没有问题。
因为这些是
Normal permissions 所以不需要处理 运行 时间检查器。
dangerous permissions and permission groups 只需要 运行 时间权限处理程序。
我尝试在我的代码中设置请求 5 权限检查
当然,我将所有五个都添加到了清单中。 而且我也试过删除应用程序并重新安装它。
但它根本不询问权限
这是我的根class
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 的原因。
看到这个link
https://developer.android.com/guide/topics/permissions/overview.html#normal-dangerous
希望这对您有所帮助。快乐编码:)
似乎所有权限都已经given.Its在代码中没有问题。
因为这些是 Normal permissions 所以不需要处理 运行 时间检查器。
dangerous permissions and permission groups 只需要 运行 时间权限处理程序。