Android 广播接收器中的捆绑值始终为空?

Android 广播接收器中的捆绑值始终为空?,android,service,sms,Android,Service,Sms,我正在使用一个BroadcastReceiver在我的项目中隐藏sms。我有两个按钮,一个用于注册,另一个用于注销广播接收器 这里是问题-当我按下按钮注册它的广播打开,但当短信接收器的功能代码不工作,它不会隐藏短信 在接收器代码中,我正在检查捆绑值是否不等于null,然后只有代码将执行隐藏部分。现在我的问题是,当开始接收sms时,如何更改捆绑值,或者是否有任何方法在通信sms 我给完整的代码,请任何人找到解决方案 //my Activity.java 包sam.ll; 导入android.app

我正在使用一个
BroadcastReceiver
在我的项目中隐藏sms。我有两个按钮,一个用于注册,另一个用于注销广播接收器

这里是问题-当我按下按钮注册它的广播打开,但当短信接收器的功能代码不工作,它不会隐藏短信

在接收器代码中,我正在检查捆绑值是否不等于null,然后只有代码将执行隐藏部分。现在我的问题是,当开始接收sms时,如何更改捆绑值,或者是否有任何方法在通信
sms

我给完整的代码,请任何人找到解决方案

//my Activity.java
包sam.ll;
导入android.app.Activity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.util.Log;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.Toast;
公共类samm扩展了活动{
按钮b1、b2;
广播接收机;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(按钮)findViewById(R.id.button1);
b2=(按钮)findViewById(R.id.button2);
mReceiver=新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
Log.i(“呼叫我”,“!!!”);
System.out.println(“podaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”);
//---获取传入的SMS消息---
Bundle=intent.getExtras();
System.out.println(“束值issss”+束);
SmsMessage[]msgs=null;
字符串str=“”;
if(bundle!=null)
{
abortBroadcast();
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];

对于(int i=0;i当您单击第一个按钮时,接收器被注册为侦听由您自己的代码创建的意图“android.intent.action.MAIN”,并且没有附加任何捆绑包(您没有附加任何内容)。不要订阅此假意图,也不要将其发送到您自己的广播接收器

要订阅传入的SMS,您需要监听其他意图:

    IntentFilter intentSMSReceiver = new IntentFilter();
    intentSMSReceiver.addAction("android.intent.action.DATA_SMS_RECEIVED");
    intentSMSReceiver.addAction("android.provider.Telephony.SMS_RECEIVED");
    registerReceiver(mReceiver, intentSMSReceiver);

当您的设备收到短信时,将发出此意向。

当您单击第一个按钮时,接收器将注册以侦听由您自己的代码创建的意向“android.intent.action.MAIN”,该意向没有附加任何捆绑包(您不附加任何内容)。请勿订阅此虚假意图,也不要将其发送到您自己的广播接收器

要订阅传入的SMS,您需要监听其他意图:

    IntentFilter intentSMSReceiver = new IntentFilter();
    intentSMSReceiver.addAction("android.intent.action.DATA_SMS_RECEIVED");
    intentSMSReceiver.addAction("android.provider.Telephony.SMS_RECEIVED");
    registerReceiver(mReceiver, intentSMSReceiver);

此意向在您的设备收到短信时发出。

单击b1以替换代码

b1.setOnClickListener(new OnClickListener() {


    public void onClick(View v) {
        // TODO Auto-generated method stub
        IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        samm.this.registerReceiver(mReceiver, intentFilter);
    }
});

单击b1以替换代码

b1.setOnClickListener(new OnClickListener() {


    public void onClick(View v) {
        // TODO Auto-generated method stub
        IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        samm.this.registerReceiver(mReceiver, intentFilter);
    }
});

你能编辑你的答案并运行我的程序吗?因为我不能从你的答案中得到答案。请检查你自己并做代码解析。你能编辑你的答案并运行我的程序吗?因为我不能从你的答案中得到答案。请检查你自己并做代码解析。你能在我的示例中与你一起检查你的答案吗当我使用它崩溃时,你能用你的风格检查我的例子中的答案吗
b1.setOnClickListener(new OnClickListener() {


    public void onClick(View v) {
        // TODO Auto-generated method stub
        IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        samm.this.registerReceiver(mReceiver, intentFilter);
    }
});