Android6.0 动态获取拨打电话授权
来源:互联网 发布:域名后缀org含义 编辑:程序博客网 时间:2024/04/27 06:03
Android 6.0 以后需要拨打电话仅在AndroidManifest 声明权限不能拨出电话,需要在运行时获取授权才能获取权限,以下为解决方法:
在点击触发按钮后,获取判断用户是否授权,如果授权,则拨打电话,否则提示用户进行授权:
AndroiManifest.xml文件的权限声明必不可少
<uses-permission android:name="android.permission.CALL_PHONE"/>
按钮点击事件触发后检查用户是否授予权限
@Override public void onClick(View view) { switch (view.getId()) { case R.id.call: callToPhone(); break; }
private void callToPhone() { /** * 借助ContextCompat.checkSelfPermission()方法判断是否授予权限,接收两个参数,Context和具体权限名,方法的返回值与 * PackageManager.PERMISSION_GRANTED做比较,相等说明已经授权 */ if(ContextCompat.checkSelfPermission(Store.this,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ /** * 同样借助ContextCompat.requestPermissions()方法弹出权限申请的对话框 * 参数为Context,具体权限名,作为返回结果的识别码(自定义) */ ActivityCompat.requestPermissions(Store.this,new String[]{Manifest.permission.CALL_PHONE},1); }else{ //已授权拨打电话 try{ Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+keyInfo.getShopPhone())); startActivity(intent); } catch (SecurityException e){ e.printStackTrace(); } } }
效果图:
最后实现回掉函数onRequestPermissionsResult()处理用户的操作结果
/** * @param requestCode 前面定义的反馈结果识别码 * @param permissions * @param grantResults 授权结果 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: //授权重新调用callToPhone if (grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){ callToPhone(); } else { //不授权提示用户的操作 Toast.makeText(this, "您拒绝授权", Toast.LENGTH_SHORT).show(); } break; default: } }
到此成功获取授权,其他权限获取授权方式与此类似
阅读全文
0 0
- Android6.0 动态获取拨打电话授权
- Android6.0拨打电话流程
- 解决Android6.0+拨打电话权限问题
- android6.0动态授权
- 动态检查拨打电话权限
- Android6.0动态获取权限
- android6.0动态获取权限
- android6.0动态获取权限
- Android6.0动态获取权限
- 关于Android6.0以上调用intent隐式意图拨打电话问题
- Android6.0权限之运行时动态授权
- android 电话号码的获取及拨打电话
- Android 6.0 获取拨打电话的权限
- android6.0以上版本动态获取权限
- android6.0以后动态获取权限
- 关于android6.0动态获取权限
- Android6.0设备上动态获取权限
- android6.0动态获取权限库
- SqlServer中存储过程中将Exec的执行结果赋值给变量输出
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- android 参考的网站
- 项目开发中的一些常见错误
- 读《Scala函数式编程》[手写笔记,图片]
- Android6.0 动态获取拨打电话授权
- Vue2.0设置全局样式(less/sass和css)
- linux内核历史版本及网址介绍
- commons-logging如何调整日志输出级别
- 安卓环境的配置
- 2分钟读懂Hadoop和Spark的异同
- 04 BeautifulSoup小实例
- 414. Third Maximum Number
- jvm垃圾收集算法·