2

是否可以动态请求Android权限?

4

4 回答 4

5

Android M 引入了新的运行时权限模型,允许您执行此操作。

于 2015-09-30T11:46:13.060 回答
3

可以,如果设备运行 Android 6.0 或更高版本,并且您的应用的目标 SDK 为 23 或更高版本。

代码片段:

if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
            }
            int result = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE);
            if (result == 0)
                 // function which uses the permission
}
于 2016-01-07T04:48:55.260 回答
0

从targetapi>22 android需要有运行时权限才能执行一些操作,下面是android中运行时请求权限的代码

//checking wether the permission is already granted
  if(ContextCompat.checkSelfPermission(this,    
                 Manifest.permission.READ_CONTACTS) ==PackageManager.PERMISSION_GRANTED){

  // permission is already granted


    }else{

       //persmission is not granted yet
       //Asking for permission
       ActivityCompat.requestPermissions(this,new String[]   {
           Manifest.permission.READ_CONTACTS},REQUEST_CODE);

    }

上面的代码用于请求读取联系人权限。同样,您也可以根据您的要求请求其他权限。有关更多详细信息,请参阅如何在 android 中请求运行时权限

于 2017-02-15T04:21:27.920 回答
-1

此解决方案针对 API < 23 的设备,对于 23 及以上,请参阅Aun答案。

虽然许多人会以“否”回答这个问题,并会告诉你这是一个安全风险,但我找到了一种方法!

看看ASTRO 文件管理器,它是 android 的著名文件管理器应用程序之一。它可以浏览您的 SD-CARD,显示您的图像、视频和最有趣的东西,它可以安装 APKs!

所以理论上,如果我创建了一个在安装期间不请求互联网访问的应用程序,我可以在我的 Raw 库中附加一个 APK 并在运行时安装它,并将我的所有权限放在那里。之后,只需一米的应用程序通信就很容易了。您可以使用广播或共享应用程序 ID 来执行此操作(首先阅读它可能有风险)

从用户体验来看,您似乎是在运行时请求权限。

于 2012-12-28T11:43:41.287 回答