限制访问通话记录
Android 9 引入 CALL_LOG 权限组
并将 READ_CALL_LOG
、WRITE_CALL_LOG
和 PROCESS_OUTGOING_CALLS
权限移入该组。 在之前的 Android 版本中,这些权限位于 PHONE 权限组。
如果应用需要访问通话记录或者需要处理去电,则您必须向 CALL_LOG
权限组明确请求这些权限。 否则会发生 <mark>SecurityException
</mark>。
限制访问电话号码
在未首先获得 READ_CALL_LOG 权限
的情况下,除了应用的用例需要的其他权限之外,运行于 Android 9 上的应用无法读取电话号码或手机状态。
与来电和去电关联的电话号码可在手机状态广播(比如来电和去电的手机状态广播)中看到,并可通过 PhoneStateListener 类
访问。 但是,如果没有 READ_CALL_LOG 权限
,则 PHONE_STATE_CHANGED 广播和 PhoneStateListener <mark>提供的电话号码字段为空</mark>。
要从手机状态中读取电话号码,请根据您的用例更新应用以请求必要的权限:
- 要通过 PHONE_STATE Intent 操作读取电话号码,同时需要
READ_CALL_LOG 权限
和READ_PHONE_STATE 权限
。 - 要从 onCallStateChanged() 中读取电话号码,只需要
READ_CALL_LOG 权限
。 不需要READ_PHONE_STATE 权限
。
限制了明文流量的网络(HTTP)请求,非加密的流量请求都会被系统禁止掉,要求使用HTTPS
解决方案:
1:在 res 下新建一个 xml 目录,然后创建一个名为:network_security_config.xml 文件 ,该文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在 AndroidManifest.xml application 标签内应用上面的xml配置:
android:name=".App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme"></application>
2.服务器和本地应用都改用 https (推荐)
3.targetSdkVersion 降级回到 27