Android 从应用程序设置中禁用(撤销)权限时处理权限
我们有一个被授予某些权限的应用程序。然后用户从设置->应用->权限中撤销权限。我提到,应用程序在这次是在后台 有时,当上述流程发生时,应用程序会崩溃。有什么办法处理这个问题吗?我们可以知道何时从应用程序设置中撤销权限吗 我没有找到任何与此主题相关的官方文件 情景:Android 从应用程序设置中禁用(撤销)权限时处理权限,android,android-permissions,user-permissions,Android,Android Permissions,User Permissions,我们有一个被授予某些权限的应用程序。然后用户从设置->应用->权限中撤销权限。我提到,应用程序在这次是在后台 有时,当上述流程发生时,应用程序会崩溃。有什么办法处理这个问题吗?我们可以知道何时从应用程序设置中撤销权限吗 我没有找到任何与此主题相关的官方文件 情景: 打开应用程序并授予所有权限 单击主页按钮(后台应用程序) 从设置中手动撤消权限 返回应用程序->应用程序崩溃 谢谢。当用户先前授予的运行时权限被撤销时,没有关于接收事件的记录,因此广播接收器在这里没有帮助。 此外,如果用户撤销了权限,
谢谢。当用户先前授予的
运行时权限被撤销时,没有关于接收事件的记录,因此广播接收器在这里没有帮助。
此外,如果用户撤销了权限,则进程将终止,该进程依赖于该关键权限
如果上述情况失败,您可以使用checkSelfPermission()
call进行检查事实上,在执行任何关键操作之前检查权限也是一种很好的做法
返回应用程序->应用程序崩溃
从来没有发生在我身上。或者可能是我没有试过;-)必须以某种方式终止依赖进程,以便您可以检查下次何时调用代码如果您使用的是活动
或片段
,您应该转到onResume()
,在那里您可以使用checkSelfPermission()检查权限
从获得参考您应该检查是否授予了权限,并根据您的要求进行处理:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case //location_permission_code:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
break;
}
}
为什么不在onResume上检查所需的权限?什么是崩溃报告?我在onResume上检查。我看到一些人建议在onCreate上检查它,但它不起作用。>此外,如果用户撤销了权限,进程将终止,这取决于关键权限。这是否适用于两者(android和ios)?好的,谢谢。我正在处理一个活动,所以我选择onResume()。您应该注意以下观察者:getApplicationContext().getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT\u URI,true,contactsObserver);