我正在将 Android 6.0 运行时权限应用到一个应用程序中,该应用程序侦听运营商数据连接状态更改。我首先尝试从清单中删除 READ_PHONE_STATE 以检查应用程序需要权限的位置。令我惊讶的是,该应用程序根本没有崩溃。
此后,我在两台 6.0 之前的设备上尝试了相同的安装,但实际上确实崩溃了。对我来说,Android 6.0 似乎不再需要该权限。有什么办法可以证实这一点吗?
下面的行是 6.0 之前的设备崩溃的行:
tm(TelephonyManager).listen(this, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
有什么办法可以证实这一点吗?
是的,这个commit https://github.com/android/platform_frameworks_base/commit/309b2f63f3265c341f6a43cbca2fb25f9c38109a删除请求READ_PHONE_STATE
当注册事件类型时LISTEN_CALL_STATE
, LISTEN_DATA_ACTIVITY
and LISTEN_DATA_CONNECTION_STATE
:
Do not enforce PHONE_STATE_PERMISSION to register listener PHONE_STATE_PERMISSION should not be required to register to the following event types:
- PhoneStateListener.LISTEN_CALL_STATE
- PhoneStateListener.LISTEN_DATA_ACTIVITY
- PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
In case of LISTEN_CALL_STATE, an empty string should be passed instead of incomingNumber, when caller has no PHONE_STATE_PERMISSION.
Bug: 21588537 Change-Id: I5b6d0308924f7e4cd13a983b8e0c9b3a5bbb119b
有关的文档开发者.android.com http://developer.android.com/reference/android/telephony/PhoneStateListener.html#LISTEN_DATA_CONNECTION_STATE已更新并正确显示不需要权限。
如果您的代码不需要权限READ_PHONE_STATE
除了其他原因LISTEN_DATA_CONNECTION_STATE
你可以改变你的AndroidManifest.xml
adding maxSdkVersion
to the uses-permission
:
<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)