Android2.1 BroadCastReceiver接收不到数据,什么原因
3个回答
2014-12-24 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数: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天半原因,咋都找不到,终于被我发现了,郁闷。
<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 广告
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
展开全部
更新一下吧,5。0都出来了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
短点调试一下,看数据到哪步不在的
追答
断点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询