我正在编写一个Android应用,该应用应记录对蜂窝网络连接的更改。我已经成功实现了BroadcastReceiver
来记录MCC / MNC更改(使用android.intent.action.SERVICE_STATE
),但是我无法获得CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED
来触发我的接收器。我想念什么?
我知道ACTION_CARRIER_CONFIG_CHANGED
是列入白名单的广播,应该仍然可以使用。我在意图过滤器中尝试了不同的拼写组合(android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED
,CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED
,ACTION_CARRIER_CONFIG_CHANGED
等)。
来自AndroidManifest.xml:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="CarrierConfigChangedReceiver" android:exported="true"> <!-- CARRIER_CONFIG_CHANGED -->
<intent-filter>
<action android:name="android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED" />
</intent-filter>
</receiver>
</application>
(注意:我将ServiceStateChangedReceiver
的接收者注册移到了MainActivity
的onCreate方法上,该方法的工作原理和以前的AndroidManifest.xml
一样)-但CarrierConfigChangedReceiver
不起作用。
从CarrierConfigChangedReceiver.java:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class CarrierConfigChangedReceiver extends BroadcastReceiver {
String msg = "BNA";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(msg, "Carrier Config change detected");
}
}
答案 0 :(得分:0)
尝试了许多其他意图事件,即android.intent.action.ACTION_SUBINFO_CONTENT_CHANGE
(对我有用)之后,我最后得出结论,我的设置中实际上没有ACTION_CARRIER_CONFIG_CHANGED
事件。不幸的是,我无法找到确切触发ACTION_CARRIER_CONFIG_CHANGED
的确切定义。
所以我想答案是:如果发生这样的事件,它将起作用。