我正在使用本教程中关于如何接收 SMS 消息的一些代码:
该代码完美运行,并且完全符合我的要求。
我有 1 个问题。
我希望我的应用程序在后台运行,但是当它关闭时,我希望它停止拦截 SMS 消息。
我的问题是,为什么我的应用程序关闭后仍在拦截短信?
我想我必须找到一个“关闭”处理程序然后关闭广播接收器。(如果有一个“关闭”事件处理程序..?)。
如果有人能提供一些见解,我将不胜感激。谢谢!
通过将您的清单放入BroadcastReceiver
清单中,默认情况下它始终处于活动状态。因此,如果您希望它仅在显示时运行,则需要在恢复/暂停时Activity
启用/禁用:BroadcastReceiver
Activity
public void onResume()
{
ComponentName component=new ComponentName(this, TextMessageReceiver.class);
getPackageManager()
.setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
public void onPause()
{
ComponentName component=new ComponentName(this, TextMessageReceiver.class);
getPackageManager()
.setComponentEnabledSetting(component,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
BroadcastReceiver
另一种方法是在您的Activity
然后调用registerReceiver
和unregisterReceiver
相同的生命周期事件中声明您的。
我环顾四周,这是我得出的结论
try{
unregisterReceiver(mybroadcast);
}catch(IllegalArgumentException e){
Log.d("reciever",e.toString());
}
我会说覆盖 onDestroy() 并把它放在那里
我会说在您的应用程序对象上覆盖 OnTerminate() 并在那里取消注册您的接收者。
@Override
public void onTerminate() {
unregisterReceiver(mybroadcast);
super.onTerminate();
}