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

Use*_*111 6 android

我在查找来自原始短信的接收方电话号码时遇到问题.这是我正在尝试的代码:

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

public class SMSReceiver extends BroadcastReceiver {

private Context context;

@Override
public void onReceive(Context context, Intent intent) {
    this.context = context;
    // Parse the SMS.
    Bundle bundle = intent.getExtras();
    SmsMessage[] msgs = null;
    String str = "";
    if (bundle != null)
    {
        // Retrieve the SMS.
        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
        for (int i=0; i<msgs.length; i++)
        {
            msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
            //appending to str String.
             str += "OriginatingAddress: ";
            str += msgs[i].getOriginatingAddress();
            str += " :\n";
            str += " :\n";
            str += "DisplayOriginatingAddress: ";
            str += msgs[i].getDisplayOriginatingAddress();
            str += " :\n";
            str += " :\n";
            str += "DisplayMessageBody: ";
            str += msgs[i].getDisplayMessageBody();
            str += " :\n";
            str += " :\n";
            str += "MessageBody: ";
            str += msgs[i].getMessageBody();
        }
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

    }
}
Run Code Online (Sandbox Code Playgroud)

提前感谢您的帮助!

ram*_*ral 0

尝试这个:

TelephonyManager manager =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = manager.getLine1Number();  
Run Code Online (Sandbox Code Playgroud)

这只适用于 SIM 卡上存储有号码的设备

  • 这不是我正在寻找的正确解决方案。即使电话号码未保存在 SIM 卡中,双 SIM 卡手机如何识别哪张 SIM 卡收到了短信?但是,我并不是在寻找设备/SIM 卡来告诉我电话号码。这可能适用于较少的 SIM 卡,但并非适用于所有 SIM 卡。您能否告诉我是否有可能从原始短信而不是取决于设备/SIM 卡来了解接收者的电话号码。 (2认同)