通过应用程序发送短信并出现在默认短信应用程序中

时间:2011-08-30 09:26:57

标签: android sms

如何发送短信并将其显示在已发送的项目中?我的意思是你通过我的应用程序发送短信,并使它看起来我通过默认的短信应用程序发送。

我使用

发送短信
private void sendSMS(String phoneNumber, String message)
{        
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    //---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS Sent", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(getBaseContext(), "Sending Failed.", Toast.LENGTH_SHORT).show();
                    break;
            }
            progDialog.dismiss();
            txtCustomerNumber.setText("");
            txtCustomerNumber.requestFocus();
        }
    }, new IntentFilter(SENT));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter(DELIVERED));        

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
}

如何通过默认短信应用程序显示它?

1 个答案:

答案 0 :(得分:0)

  

如何通过默认短信应用程序显示它?

使用ACTION_SEND代替SmsManager,并允许用户选择他们想要的SMS客户端。或者,编写自己的SMS客户端。

没有通用的“默认短信应用”。每个短信应用都可以选择跟踪发送的项目;如果是这样,那些项目将是发送的内容,因为这些是它将知道的唯一SMS消息。某些SMS应用程序可能会提供某种记录和支持的API来处理已发送的项目。作为Android开源项目一部分的Messenger应用程序不会。

Messenger应用程序有一个未记录且不受支持的内容提供程序。有人可能会在这个问题上引用并引用它。请记住Google just locked down the similarly undocumented and unsupported Gmail content provider。因此,使用这样的未记录和不受支持的API是有风险的业务。