文档章节

Android6.0拨打电话时的权限问题

汇聚成河
 汇聚成河
发布于 2017/04/19 16:03
字数 438
阅读 110
收藏 0

首先在AndroidMenifest文件里加上这个权限: <uses-permission android:name="android.permission.CALL_PHONE" />

1.如果是直接跳转到拨号盘,是不存在权限管制的问题的. 2.如果是直接拨打电话,会存在权限动态获取的问题. 解决的代码如下:

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    //没有权限,申请授权
                    if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)) {
                        //如果app之前请求过该权限,被用户拒绝, 这个方法就会返回true.
                        // 如果用户之前拒绝权限的时候勾选了对话框中”Don’t ask again”的选项,那么这个方法会返回false.
                        // 如果设备策略禁止应用拥有这条权限, 这个方法也返回false.
                        // 弹窗需要解释为何需要该权限,再次请求授权
                        Util.showToast(MyRevationDetailActivity.this, getResources().getString(R.string.call_phone_authority_tv));
                        //跳转到该应用的设置界面,让用户手动授权
                        Intent intentSet = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                        Uri uri = Uri.fromParts("package", getPackageName(), null);
                        intentSet.setData(uri);
                        startActivity(intentSet);
                    } else {
                        //直接请求授权
                        /*
                        在Fragment中申请权限,不要使用ActivityCompat.requestPermissions,
                        直接使用Fragment的requestPermissions方法,否则会回调到Activity的onRequestPermissionsResult
                         */
                        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, Util.HTTP_CALL_PHONE_REQUEST);
                    }
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, Util.HTTP_CALL_PHONE_REQUEST);
                } else {
                    //在这里直接拨打电话
                    Intent intent = new Intent(Intent.ACTION_CALL);
                    Uri data = Uri.parse("tel:" + "电话号码");
                    intent.setData(data);
                    startActivity(intent);
                }
	@Override
	public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                //requestCode 是一个标识,
		if (requestCode == Util.MY_PERMISSIONS_REQUEST_CALL_PHONE) {
			if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
			{
                                 //获取到权限之后,进行下一步操作
				startTakePhoto();
			} else {
				//跳转到该应用的设置界面,让用户手动授权
				Intent intentSet = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
				Uri uri = Uri.fromParts("package", getPackageName(), null);
				intentSet.setData(uri);
				startActivity(intentSet);
				Util.showToast(PhotoSelectorActivity.this, getResources().getString(R.string.allow_take_photo));
			}
		}
	}

© 著作权归作者所有

汇聚成河
粉丝 1
博文 34
码字总数 27236
作品 0
浦东
程序员
私信 提问
Android各系统版本应用程序内接听电话功能的实现

目前公司项目遇到的问题,急需大牛前来解决,应用内容大概为:Android应用监听来电,收到来电后弹出应用内自定义的来电界面(Activity),通过界面上的接听按钮接通来电。 问题如下: 1.部分...

杨文浩
2018/08/02
0
0
Android6.0动态权限适配&XMPermissions

Android6.0动态权限 简介 从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要...

静默加载
2018/09/29
0
0
   基于android6.0动态获取app功能权限

基于android6.0动态获取app功能权限 做为我第一篇博客,我会讲比较基础权限调用,做android开发3年多,一直没有时间空下来总结我的经验,现在我在每个月的固定时间段,更新我的博客,与大家分...

android_叶芸
2017/11/01
52
0
android权限问题

虽然现在android已经出了7.0了。但是大部分人用的应该还是5.0和6.0的。 其中对于开发者来说,变化比较大的应该是6.0之前和6.0之后的版本。 因为以6.0为分界线多了一个比较坑的东西:权限的动...

nesger
2016/12/02
158
0
Android 6.0棉花糖新特性,

对于Android粉的我们来说,2015年11月24日凌晨1点~上午10点,2015年11月25日凌晨1点~上午10点这2天,是值得期待的,因为Google公司将进行为期2天的Android开发者大会,大会将发布Android 6.0...

小梦想家
2015/11/24
273
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
昨天
6
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部