Android2.1 BroadCastReceiver接收不到数据,什么原因

 我来答
huanglenzhi
2014-12-24 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517203
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
权限代码:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

注册receiver:
<receiver android:name=".GetData">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

java类GetData :
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class GetData extends BroadcastReceiver {
private static final String mACTION="android.provider.Telephony.SMS_RECEIVED";

@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(mACTION))
{

StringBuilder sb=new StringBuilder();
Bundle bundle=intent.getExtras();
if(bundle!=null)
{
Object[] obj=(Object[])bundle.get("pdus");

//构建信息对象
SmsMessage[] message=new SmsMessage[obj.length];
for(int i=0;i<obj.length;i++)
{
message[i]=SmsMessage.createFromPdu((byte[])obj[i]);
}

for(SmsMessage currentMessage:message)
{
sb.append("接收到来自:\n");
//发送人的电话号码
sb.append(currentMessage.getDisplayOriginatingAddress());
sb.append("\n-------传来的信息---------\n");
//发送的信息内容
sb.append(currentMessage.getDisplayMessageBody());

}
}
//以Notification显示来讯信息
Toast.makeText(context,sb.toString(), Toast.LENGTH_LONG).show();

//返回主程序BroadCastTest
Intent i=new Intent(context,TestReceiver.class);
//以一个全新的任务来运行
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

}

}

}

java类:TestReceiver
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TestReceiver extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView txt=(TextView)findViewById(R.id.TextView01);
txt.setText("等待接收......");
}
}

以上代码接收不到系统收到短信的广播,有人遇到过这个问题吗?解答一下,谢谢了。

已找到原因,故结束此问题

因为基础和眼神不够好

把<receiver android:name=".GetData">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
这一段写到application标记外面了!
找了1天半原因,咋都找不到,终于被我发现了,郁闷。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
Mima14we
2014-12-23 · 超过14用户采纳过TA的回答
知道答主
回答量:200
采纳率:0%
帮助的人:40.3万
展开全部
更新一下吧,5。0都出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
andy437014015
2014-12-23
知道答主
回答量:7
采纳率:0%
帮助的人:3万
展开全部
短点调试一下,看数据到哪步不在的
追答
断点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式