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);