当前位置: 首页 > 面试题库 >

何时在运行时为Android Marshmallow 6.0请求权限?

姜玮
2023-03-14
问题内容

我正在测试我的应用,即使清单中已经定义Marshmallow 6.0android.permission.READ_EXTERNAL_STORAGE,它也会被强制关闭。我在某处已经读到,如果我在运行时请求权限,则不会强制关闭您的应用程序。我也已经阅读了这个android文档,用于请求运行时权限。

因此,我知道我们可以请求一个如下所示的权限,该权限在android文档中有所提及。

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}

上面的代码具有onRequestPermissionsResult获取结果的回调方法。

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {

     }
}

我的问题是要向用户确切请求权限?我们应该在应用启动时使用请求权限还是应该在需要权限时使用?


问题答案:

通常,在需要时立即请求所需的权限。通过这种方式,您可以通知用户为什么需要许可并处理许可被拒绝变得容易得多。

考虑一下用户在应用程序运行时撤消该权限的情况:如果您在启动时请求它,而以后再也不检查它,则可能导致意外的行为或异常。



 类似资料:
  • 首先,我知道这是一个重复的问题,但我已经看过了其他类似问题的答案,没有找到成功的解决方案。 我已经开发了一款应用程序,可以在我的测试设备上完美运行,这是一款运行Android L(5.0.1)的三星S4。不过,我希望这款应用程序也能在较新版本的Android上运行。 我知道Android M的请求权限已更改,因此必须在运行时请求权限,但当我尝试实现此功能时,对话框从未出现,因此从未请求所需的权限。

  • 我做错了什么?

  • 问题内容: 我有用于调用操作的代码,并且我需要声明运行时权限的最佳方式IVE我尝试了许多代码,但我始终会出错 这是我的基本代码,任何有关使其具有运行时权限的建议,请先谢谢 } 问题答案: 在您的方法中尝试此代码 现在,调用创建一个单独的方法: 添加以下两种用于运行时权限检查的方法: 还要确保将其添加到清单中: 碎片 如果您在中尝试使用此代码 ,请更改 至 并且也改变 至

  • 我正在开发一个Android应用程序,我必须允许用户使用相机扫描QR码。 在每个Android版本中(除外 我阅读了开发android网站的文档,但我不理解一些事情: 守则第二部分: 如何使此代码适应我的问题? 什么是“MY_PERMISSIONS_REQUEST_READ_CONTACTS”?

  • 我已在清单文件中添加了所有权限。在Lollipop中,所有应用程序都会在安装应用程序期间询问权限,但当应用程序安装在Marshmallow中时,权限不是询问。 清单权限是

  • 在我的应用程序中,当我调用 并且以前拒绝了该权限,并且选中了Never ask again,则它根本不会显示对话框。这是预期的行为吗?