您的位置:首页 > 移动开发 > Android开发

Android开发——动态申请权限

2018-01-21 16:15 363 查看
Android开发需要获取各种权限,每种权限的获取方式基本一致,下面就以获取拨号权限为例介绍如何在Android开发中获取权限。

首先在AndroidManifest.xml中申请需要用到的权限:

<uses-permission android:name="android.permission.CALL_PHONE"/>
进行权限检查,如果已获取到权限则直接进行相关操作,否则请求权限。shouldShowRequestPermissionRationale函数用于显示需要获取该权限的原因,提高用户体验,该函数可以省去,直接调用requestPermissions申请权限。

if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
if(!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.CALL_PHONE)){
showMessageOkCancel("需要获取拨号权限才能正常使用",
new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
if()
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CALL_PHONE},
MY_PERMISSION_REQUEST_CALL_PHONE);
}
});
return;
}
else{
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CALL_PHONE},
MY_PERMISSION_REQUEST_CALL_PHONE);
return;
}
}
Callphone();运行时权限回调函数:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
switch (requestCode){
case MY_PERMISSION_REQUEST_CALL_PHONE:{
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
Callphone();
}
else{
Toast.makeText(MainActivity.this,"CALL_PHONE Denied",Toast.LENGTH_SHORT).show();
}
break;
}
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}完整获取拨号权限源代码:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: