首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >收听广播后收到的短信是未注册的:很好的功能或广播接收者的错误?

收听广播后收到的短信是未注册的:很好的功能或广播接收者的错误?
EN

Stack Overflow用户
提问于 2011-12-01 07:48:57
回答 2查看 897关注 0票数 1

我有一个应用程序,应该观看传入的短信(扫描短信文本和显示基于内容的吐司消息),即使在我的应用程序是关闭的。想要的功能是应用程序监视所有传入的短信,直到应用程序不会从设备上移动,现在它是这样工作的。但是我想,如果我很快就需要“切换”这只“观察眼”,我该怎么做呢?

代码语言:javascript
复制
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。在主活动中,我不调用此接收器,不注册,也不注销。它只是独立工作。太棒了。所以..。我怎样才能停止这个接收器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-01 08:41:54

你必须从你的清单中取出BroadcastReceiver来控制它,比如在ServiceActivity中使用它。当它在清单中时,它总是开着的。

票数 1
EN

Stack Overflow用户

发布于 2011-12-01 09:10:08

注册/注销BroadcastReceivers最常见的方法是使用ActivityonResume()onPause()方法。

首先,将<intent-filter>从您的货单中删除,即删除此部分......

代码语言:javascript
复制
<intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECIEVED"></action>
</intent-filter>

然后将类似这样的内容添加到您的Activity中...

代码语言:javascript
复制
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;
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8334732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档