动态请求Android权限

时间:2012-12-28 11:43:41

标签: android dynamic permissions

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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
}

答案 2 :(得分: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);

    }

以上代码用于请求读取联系人权限。同样,您也可以根据您的要求请求其他权限。有关详细信息,请参阅How to request run time permission in android

答案 3 :(得分:-1)

该解决方案针对API< 23,23及以上,见Aun回答。

虽然很多人会回答这个问题,并且会告诉你这是一个安全隐患,但我找到了办法!

看一下ASTRO File Manager,这是android的一个着名的文件管理器应用程序。它可以显示你的SD卡,显示你的图像,视频和最有趣的东西,它可以安装APK!

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

根据用户体验,您似乎在运行时询问权限。