Android 运行时权限申请之电话权限(兼容6.0以上)

运行时权限的申请一般是危险权限的申请,在android 6.0以后,所有的危险权限都需要用户手动的确认是否开启。下面图片是所有的危险权限。不必牢记,需要用的时候直接查询即可。本文来看电话权限的申请。

1.首先在AndroidManifest.xml中申明权限

<!--拨打电话权限--><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

2.当android 6.0以下时直接运行以下代码就可以调用拨打电话了

try {    Intent intent = new Intent(Intent.ACTION_CALL);    intent.setData(Uri.parse("10086"));    startActivity(intent);}catch (SecurityException e){    e.printStackTrace();}

3.但在android 6.0以后,由于安全问题,拨打电话属于危险权限,需要用户手动去开启。

除了同样在启动的时候申明权限外,需要在运行的时候进行权限的判断。checkSelfPermission接收上下文和打电话权限两个参数,PERMISSION_GRANTED代表用户同意开启打电话权限。所以上面的代码修改下面的代码,就能同时兼容6.0以上和以下的版本了:

 //弹出权限检查                    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE)                    != PackageManager.PERMISSION_GRANTED){                ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},1);            }else {                callPhone();            }/** * 拨打电话 */private void callPhone(){    try {        Intent intent = new Intent(Intent.ACTION_CALL);        intent.setData(Uri.parse("10086"));        startActivity(intent);    }catch (SecurityException e){        e.printStackTrace();    }}/** * 监控权限变化 * @param requestCode * @param permissions * @param grantResults */@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {    switch(requestCode){        case 1:            if (grantResults.length>0&&grantResults[0] == PackageManager.PERMISSION_GRANTED){                callPhone();            }            break;        default:    }}

ps:本文只是拿打电话权限来举事例,如别的权限还有位置权限,我们只需要把Manifest.permission.CALL_PHONE替换成位置权限即可

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一个android文本比对APP的实现(三)-设计模式在文件选择模块中的运用
  3. Android中的Toast重复显示的问题
  4. Android(安卓)APP如何防止二次打包揭秘。
  5. [置顶] Android(安卓)4.0 中由ProGuard引发的一场血案
  6. Android动态权限申请
  7. Android(安卓)SDK开发指南(翻译)系列一:最佳实践(二)-- 反应速度设
  8. Android(安卓)USB串口通信实现 以及绕过USB弹框验证
  9. Android(安卓)双击返回键退出程序的方法总结

随机推荐

  1. 通杀所有系统的硬件漏洞?聊一聊Drammer,And
  2. Android沉浸式状态栏,看完这篇就够了!
  3. 中国的 Android:尚未发掘的应用市场?
  4. 做好准备,让你的短信应用迎接Android(安卓
  5. android开发——通过子线程更新界面UI
  6. Android 内功心法(1.2)——android常用设
  7. Android系统信息获取 之十二:获取屏幕分辨
  8. Android 自定义组件
  9. android 模拟器的使用(Android模拟器介绍
  10. Android加载Gif图片的一般方法:Movie实现