这可能是一个非常简单的问题,但我似乎从一天开始就挂在这些问题上。所以这是一个问题:
如何取消注册从AndroidManifest文件注册的Activity中的BroadcastReceiver? 这是代码::
<receiver android:name=".PhoneCallReceiver">
<intent-filter >
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
我熟悉这个功能
public void unregisterReceiver(BroadcastReceiver receiver)
但如果未使用
从该活动中注册,则会引发异常IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.PHONE_STATE");
registerReceiver(mybroadcast, filter);
答案 0 :(得分:4)
要停用receiver
中定义的manifest
,请使用以下命令:
PackageManager pm = context.getPackageManager();
ComponentName component = new ComponentName(context, PhoneCallReceiver.class)
pm.setComponentEnabledSetting(component , PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);
答案 1 :(得分:0)
试试这个:
public void onResume()
{
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.PHONE_STATE");
registerReceiver(mybroadcast, filter);
}
public void onPause()
{
unregisterReceiver(mybroadcast);
}