如何获取短信的电话号码?

问题描述

| 如何获得传入的SMS电话号码? 我在此链接中写了“ 0”,但没有任何输出。此外,ѭ0中的Toast消息也不会显示。 这是我使用的那个
sms.java
文件
public class SMS extends Activity {
    /** Called when the activity is first created. */
    Button btn;
    EditText edt1;
    EditText edt2;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn=(Button) findViewById(R.id.btn1);
        edt1=(EditText) findViewById(R.id.edt1);
        edt2=(EditText) findViewById(R.id.edt2);

        btn.setonClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Todo Auto-generated method stub
                String phone=edt1.getText().toString();
                String message=edt2.getText().toString();

                if (phone.length()>0 && message.length()>0)
                    sendSMS(phone,message);
                else
                    Toast.makeText(getApplicationContext(),\"Enter the phone_no & message.\",Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void sendSMS(String phoneNumber,String message)
    {
        Intent i1 = new Intent(this,SMS.class);
        PendingIntent pi = PendingIntent.getActivity(this,i1,0);
        SmsManager SMS1 = SmsManager.getDefault();
        SMS1.sendTextMessage(phoneNumber,null,message,pi,null);
    }
}
    

解决方法

使用getOriginatingAddress方法。     ,您可以通过以下方式获取传入SMS的电话号码。
  Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
    String string = \"\";
    String phone = \"\";

    if (bundle != null)
    {
        //---receive the SMS message--
        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]); 
            phone = msgs[i].getOriginatingAddress();  // Here you can get the phone number of SMS sender.
            string += msgs[i].getMessageBody().toString(); // Here you can get the message body.
          }
     }
重要的是您需要在清单文件中提及权限(即)。在广播接收器类中,您必须在意图过滤器中提到“ 6”。     ,设置正确的清单文件设置以接收传入的SMS。