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);
}
}完整获取拨号权限源代码:点击打开链接
首先在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);
}
}完整获取拨号权限源代码:点击打开链接
相关文章推荐
- APP开发实战82-Android动态权限申请
- Android开发之利用注解简单实现动态权限申请
- Android 6.0动态权限申请问题
- Android 6.0以上动态申请文件读写权限
- Android之动态申请权限(API23以上需求)
- android动态申请权限
- Android避免动态申请权限
- Android开发之运行时权限申请和自定义权限
- Android 6.0 动态权限申请
- Android开发不申请权限来使用对应功能
- Android 6.0(API 23) 含以上 java.lang.SecurityException 权限需动态申请(危险权限)
- Android动态权限申请
- Android 调用相机裁剪图片,和调用相册裁剪图片,动态申请相机权限和sd的读写权限
- android 动态申请权限
- Android动态权限申请
- Android 6.0 之后动态权限申请
- Android 新安全机制之动态权限申请
- Android自定义权限与动态申请权限
- Android适配API23之后权限的动态申请
- Android 6.0 动态权限申请注意事项