我有一个应用程序,应该观看传入的短信(扫描短信文本和显示基于内容的吐司消息),即使在我的应用程序是关闭的。想要的功能是应用程序监视所有传入的短信,直到应用程序不会从设备上移动,现在它是这样工作的。但是我想,如果我很快就需要“切换”这只“观察眼”,我该怎么做呢?
public class SmsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
//do some action
}
}BroadcastReceiver的代码是一个独立的单元SMSReceiver.java。在主活动中,我不调用此接收器,不注册,也不注销。它只是独立工作。太棒了。所以..。我怎样才能停止这个接收器?
发布于 2011-12-01 08:41:54
你必须从你的清单中取出BroadcastReceiver来控制它,比如在Service或Activity中使用它。当它在清单中时,它总是开着的。
发布于 2011-12-01 09:10:08
注册/注销BroadcastReceivers最常见的方法是使用Activity的onResume()和onPause()方法。
首先,将<intent-filter>从您的货单中删除,即删除此部分......
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECIEVED"></action>
</intent-filter>然后将类似这样的内容添加到您的Activity中...
public class MyActivity extends Activity {
private final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private SMSReceiver smsReceiver = null;
private Boolean isReceiverRegistered = false;
@Override
protected void onResume() {
if (!isReceiverRegistered) {
registerReceiver(smsReceiver, new IntentFilter(ACTION_SMS_RECEIVED));
isReceiverRegistered = true;
}
}
@Override
protected void onPause() {
if (isReceiverRegistered) {
unregisterReceiver(smsReceiver);
isReceiverRegistered = false;
}
}
}https://stackoverflow.com/questions/8334732
复制相似问题