Android 9 来电监听incomingNumber为空
为了增强用户隐私,Android 9 引入了若干行为变更,如限制后台应用访问设备传感器、限制通过 Wi-Fi 扫描检索到的信息,以及与通话、手机状态和 Wi-Fi 扫描相关的新权限规则和权限组。
限制访问电话号码
在未首先获得 READ_CALL_LOG 权限的情况下,除了应用的用例需要的其他权限之外,运行于 Android 9 上的应用无法读取电话号码或手机状态。
与来电和去电关联的电话号码可在手机状态广播(比如来电和去电的手机状态广播)中看到,并可通过 PhoneStateListener 类访问。 但是,如果没有 READ_CALL_LOG 权限,则 PHONE_STATE_CHANGED 广播和 PhoneStateListener 提供的电话号码字段为空。
要从手机状态中读取电话号码,请根据您的用例更新应用以请求必要的权限:
要通过 PHONE_STATE Intent 操作读取电话号码,同时需要 READ_CALL_LOG 权限和 READ_PHONE_STATE 权限。
要从 onCallStateChanged() 中读取电话号码,只需要 READ_CALL_LOG 权限。 不需要 READ_PHONE_STATE 权限。
<!--读取电话的状态信息的权限--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--读取通话记录的权限--><uses-permission android:name="android.permission.READ_CALL_LOG" />
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;public class MyPhoneStateListener extends PhoneStateListener {private static final String TAG = "MyPhoneStateListener";@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE:Log.d(TAG ,"电话挂断...");break;case TelephonyManager.CALL_STATE_OFFHOOK:Log.d(TAG ,"正在通话...");break;case TelephonyManager.CALL_STATE_RINGING:Log.d(TAG ,"电话响铃...");break;}super.onCallStateChanged(state, incomingNumber);}
}
Android 9 来电监听incomingNumber为空相关推荐
- 【Android】来电监听
Android 来电监听 1 依据来电号码查询本地联系人 1.1 权限 1.2 实现 2 来电监听方法(有两种) 2.1 系统广播监听 2.1.1 权限 2.1.2 注册电话状态系统广播接收器 2.2 ...
- android 双卡来电监听,Android 实现获取双卡中的联系人
Android 获取联系人及其双卡联系人需要申请如下权限 接下来就是实现获取双卡联系人代码: if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LO ...
- Android 来电监听
最近刚接到一个需求,为BOSS做一个来电显示功能,查找号码库显示姓名角色. 一.查找来电监听方法 PhoneStateListener监听器类,用于监视设备上特定电话状态的变化,包括服务状态.信号强度 ...
- android 2.1 监听电话状态并自动接听来电
一.开发环境 Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点: 距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...
- [已验证]双卡手机下两种来电监听方法的一些问题。
为什么80%的码农都做不了架构师?>>> 首先,网上学习到的来电监听有两种方法,但在双卡手机上都不太正常工作. 经过用户的反馈,基本上都能监听到大部分主流双卡手机的主副卡来电了 ...
- Android 来去电监听,电话挂断
android:enabled="true" android:process=":PhoneListenService"> public class Ph ...
- Android的Button监听
1.android简单按钮监听----单个监听 start = (Button)findViewById(R.id.btnStart); start.setOnClickListener(new On ...
- android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全
android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...
- Android开发之监听手机来电
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息.关于TelephonyManager的详解可以参照:Andr ...
最新文章
- Mason 简单笔记
- 从源码来理解slf4j的绑定,以及logback对配置文件的加载
- spring cloud 定时任务
- 关于项目过程能力基线的几个讨论
- Xamarin Studio支持TypeScript开发
- 40个Java多线程问题详解复习
- 前端学习(1797):前端调试之html/css介绍
- 【linux】常用命令总结
- 22个HTML5的初级技巧
- 介绍两种简单实用的信道编码——CRC校验和汉明码
- js如何获取计算机当前时间,js获取当前系统时间实例代码
- 灵活易用的液体创可贴,让伤口愈合更快,海氏海诺液体创可贴上手
- php加波浪线不解析,给文字加波浪线效果
- Android笔记:将布局转换成图片
- 微信公众号服务器端脑图,微信公众号中隐藏的思维导图工具,帮你随时随地高效思考...
- 清单革命 <<读后感>> _(:з」∠)_
- python win32com excel_如何用Python win32com处理Excel数据?
- magento怎么修改货币符号,在之前加上国家缩写
- 小羊驼和你一起学习cocos2d-x之二(屏幕匹配、多分辨率解决方案、分辨率适配)
- CTO语录:真正技术高手是如何炼成的?