Android - sendTextMessage消息未显示在SMS应用程序中

时间:2013-04-03 10:41:19

标签: android sms

我正在编写一个应用程序,它会在某些情况下自动发送短信给某个号码,短信代码正常工作,短信也会发送..但发送的短信没有显示在任何 其他 安装了SMS客户端/应用程序......

String phoneNumber = "1234512345";
String message = "Test Message";
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);

我缺少什么? 我希望发送的短信(我的应用发送的)显示在已安装的其他短信应用中..

2 个答案:

答案 0 :(得分:6)

是的,您已经以编程方式发送短信,但未通知短信内容提供商,因此除非您通知,否则不会收到您的消息。

 ContentValues values = new ContentValues(); 
 values.put("address", "1234512345"); 
 values.put("body", "Test Message"); 
 getContentResolver().insert(Uri.parse("content://sms/sent"), values);

确保在AndroidManifest.xml文件中包含以下权限:

<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />

答案 1 :(得分:-2)

在接收方申请中使用广播接收器

 @Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub

     Bundle bundle = intent.getExtras();
     String str="";
     String from="";


        if (bundle != null) {
            Object[] pdus = (Object[])bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                    
               str += messages[i].getMessageBody().toString();
               from = messages[i].getOriginatingAddress().toString();
            }

           if(from.equals("123456789")){ 

           str= str.trim();

           abortBroadcast();
           Intent intt = new Intent(context,MainActivity.class);
                   intt.putExtras("message",str); 
           intt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           context.startActivity(intt);
           }
       }
在你的mainActivity中写一些代码来显示获取的消息。消息将在意图中。所以从中获取String。

这里广播接收器仅接收来自号码“123456789”的消息。来自此号码的邮件不会转到您移动设备的收件箱中。如果你想在收件箱中看到也删除方法abortBroadcast()。