adb 如何发一条消息,测试BroadcastReceiver

princesshan 2018-05-07 03:42:58
public class zit_SMSReceive extends BroadcastReceiver {

private static final String mAction = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SmsReceiver";

@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(bundle != null)
{

Object myOBJpdus[] = (Object[]) intent.getExtras().get("pdus");
。。。。。。。。。。

}
}
测试的手机里面没有sim card
如何通过adb 模拟发一个东西 类似adb shell am broadcast 。。。。。
后面不知道怎么写, 能够测试上面的代码。
我自己试着发了一个下面的
adb shell am broadcast -a android.provider.Telephony.SMS_RECEIVED --es pdus 01020299988
但是一到Object myOBJpdus[] = (Object[]) intent.getExtras().get("pdus"); 就出问题了。
...全文
1274 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
small_technical 2018-05-14
  • 打赏
  • 举报
回复
引用 3 楼 princesshan 的回复:
String tmp =intent().getStringExtra("pdus"); 这个代码确实可以取到 “01020299988” ,因为这样取出来的直接就是string, 下面的代码要求的是Object[] 但是下面的代码该如何调试那。 for (Object object : myOBJpdus) { SmsMessage message; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { format = bundle.getString("format"); message = SmsMessage.createFromPdu((byte[]) object, format); } else { message = SmsMessage.createFromPdu((byte[]) object); } // SmsMessage message = SmsMessage // .createFromPdu((byte[]) object); sender = message.getOriginatingAddress(); builder.append(message.getMessageBody()); Log.i(TAG, "sender: " + sender + " builder: " + builder); }
引用 3 楼 princesshan 的回复:
String tmp =intent().getStringExtra("pdus"); 这个代码确实可以取到 “01020299988” ,因为这样取出来的直接就是string, 下面的代码要求的是Object[] 但是下面的代码该如何调试那。 for (Object object : myOBJpdus) { SmsMessage message; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { format = bundle.getString("format"); message = SmsMessage.createFromPdu((byte[]) object, format); } else { message = SmsMessage.createFromPdu((byte[]) object); } // SmsMessage message = SmsMessage // .createFromPdu((byte[]) object); sender = message.getOriginatingAddress(); builder.append(message.getMessageBody()); Log.i(TAG, "sender: " + sender + " builder: " + builder); }
引用 3 楼 princesshan 的回复:
String tmp =intent().getStringExtra("pdus"); 这个代码确实可以取到 “01020299988” ,因为这样取出来的直接就是string, 下面的代码要求的是Object[] 但是下面的代码该如何调试那。 for (Object object : myOBJpdus) { SmsMessage message; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { format = bundle.getString("format"); message = SmsMessage.createFromPdu((byte[]) object, format); } else { message = SmsMessage.createFromPdu((byte[]) object); } // SmsMessage message = SmsMessage // .createFromPdu((byte[]) object); sender = message.getOriginatingAddress(); builder.append(message.getMessageBody()); Log.i(TAG, "sender: " + sender + " builder: " + builder); }
引用 3 楼 princesshan 的回复:
String tmp =intent().getStringExtra("pdus"); 这个代码确实可以取到 “01020299988” ,因为这样取出来的直接就是string, 下面的代码要求的是Object[] 但是下面的代码该如何调试那。 for (Object object : myOBJpdus) { SmsMessage message; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { format = bundle.getString("format"); message = SmsMessage.createFromPdu((byte[]) object, format); } else { message = SmsMessage.createFromPdu((byte[]) object); } // SmsMessage message = SmsMessage // .createFromPdu((byte[]) object); sender = message.getOriginatingAddress(); builder.append(message.getMessageBody()); Log.i(TAG, "sender: " + sender + " builder: " + builder); }
你为什么会去遍历你获取到的String信息,这个思路没看明白啊
princesshan 2018-05-09
  • 打赏
  • 举报
回复
String tmp =intent().getStringExtra("pdus"); 这个代码确实可以取到 “01020299988” ,因为这样取出来的直接就是string, 下面的代码要求的是Object[] 但是下面的代码该如何调试那。 for (Object object : myOBJpdus) { SmsMessage message; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { format = bundle.getString("format"); message = SmsMessage.createFromPdu((byte[]) object, format); } else { message = SmsMessage.createFromPdu((byte[]) object); } // SmsMessage message = SmsMessage // .createFromPdu((byte[]) object); sender = message.getOriginatingAddress(); builder.append(message.getMessageBody()); Log.i(TAG, "sender: " + sender + " builder: " + builder); }
xiaofeng-huang 2018-05-08
  • 打赏
  • 举报
回复
adb shell am broadcast -a android.provider.Telephony.SMS_RECEIVED --es pdus 01020299988 改为 adb shell am broadcast -a android.provider.Telephony.SMS_RECEIVED --es pdus “01020299988” Object myOBJpdus[] = (Object[]) intent.getExtras().get("pdus"); 改为 String tmp =intent().getStringExtra("pdus"); 试看看
princesshan 2018-05-08
  • 打赏
  • 举报
回复
自己顶一下。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧