问题描述
|
如何获得传入的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。