是否可以动态请求Android权限?
答案 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)
虽然很多人会回答这个问题,并且会告诉你这是一个安全隐患,但我找到了办法!
看一下ASTRO File Manager,这是android的一个着名的文件管理器应用程序。它可以显示你的SD卡,显示你的图像,视频和最有趣的东西,它可以安装APK!
所以从理论上讲,如果我创建的应用程序在安装期间没有请求访问互联网,我可以在我的Raw库中附加一个APK并在运行时安装它,并将我的所有权限放在那里。之后,只需一米的应用程序通信即可。您可以使用广播或共享应用程序ID执行此操作(首先阅读它可能有风险)
根据用户体验,您似乎在运行时询问权限。