我想在Android应用中收听APN更改。
因此我在android.intent.action.BOOT_COMPLETED
开始提供服务。
此服务启动一个ContentObserver,用于侦听对其的更改
content://telephony/carriers/preferapn
。
我在几个不同的设备上测试了这个设置(例如LG Spirit with Android 5.0,Samsung A3 with 6.0,Emulator Nexus5 with 7.0和Huawei P9 Lite with 7.0)
在华为电话上,我的服务onCreate
未被呼叫。
我的另一种方法是将android.intent.action.ANY_DATA_STATE
与BroadcastReceiver
结合使用,并在Manifest中注册,并且无法在此手机上使用。
我的清单的相关部分:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
...
<receiver android:name=".ConnectivityChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.ANY_DATA_STATE" />
</intent-filter>
</receiver>
<receiver android:name=".APNChangedServiceStarter" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
<service android:name=".APNChangedService"></service>