我想监听我的Android应用程序中的APN更改。
因此,我在android.intent.action.BOOT_COMPLETED
上启动一个服务。
该服务启动一个ContentObserver,监听对content://telephony/carriers/preferapn
的更改。
我在几个不同的设备上测试了这个设置(例如带有Android 5.0的LG Spirit,带有6.0的Samsung A3,Emulator Nexus5和带有7.0的Huawei P9 Lite)。
在华为手机上,我的服务的onCreate
没有被调用。
我的另一种方法是在清单中注册的BroadcastReceiver
与android.intent.action.ANY_DATA_STATE
结合使用,在这部手机上也无法工作。
清单的相关部分:
<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>