Android:如何从原始短信获取发件人和收件人电话号码

前端之家收集整理的这篇文章主要介绍了Android:如何从原始短信获取发件人和收件人电话号码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在查找来自原始短信的接收方电话号码时遇到问题.这是我正在尝试的代码

有人能告诉我如何从原始短信中检索接收者的电话号码.

  1. public class SMSReceiver extends BroadcastReceiver {
  2.  
  3. private Context context;
  4.  
  5. @Override
  6. public void onReceive(Context context,Intent intent) {
  7. this.context = context;
  8. // Parse the SMS.
  9. Bundle bundle = intent.getExtras();
  10. SmsMessage[] msgs = null;
  11. String str = "";
  12. if (bundle != null)
  13. {
  14. // Retrieve the SMS.
  15. Object[] pdus = (Object[]) bundle.get("pdus");
  16. msgs = new SmsMessage[pdus.length];
  17. for (int i=0; i<msgs.length; i++)
  18. {
  19. msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
  20. //appending to str String.
  21. str += "OriginatingAddress: ";
  22. str += msgs[i].getOriginatingAddress();
  23. str += " :\n";
  24. str += " :\n";
  25. str += "DisplayOriginatingAddress: ";
  26. str += msgs[i].getDisplayOriginatingAddress();
  27. str += " :\n";
  28. str += " :\n";
  29. str += "DisplayMessageBody: ";
  30. str += msgs[i].getDisplayMessageBody();
  31. str += " :\n";
  32. str += " :\n";
  33. str += "MessageBody: ";
  34. str += msgs[i].getMessageBody();
  35. }
  36. Toast.makeText(context,str,Toast.LENGTH_SHORT).show();
  37.  
  38. }
  39. }

提前感谢您的帮助!

解决方法

TelephonyManager不是正确的解决方案,因为在某些情况下,该号码不会存储在SIM卡中,由于我的建议,您应该在应用程序打开时首次使用共享首选项来存储用户的电话号码,之后每次都会使用该号码你需要申请.

如果你想获得发件人号码,
你只有在收到一个包来获取消息内容时才在onReceive of Broadcast中调用这个方法

  1. messsage[0].getOriginatingAddress();

猜你在找的Android相关文章