Android应用程序不会在真实设备上自动发送短信

时间:2012-09-04 11:49:41

标签: android sms

我开发了一个Android应用程序,可自动将SMS发送到接收SMS的设备。

我的应用程序在模拟器上工作正常但是当我在真实设备(Android移动设备)上运行它时它只接收短信并且不会自动发送响应。

我的代码如下。

public class SMSReciever extends BroadcastReceiver {

    String address;
    String smsMe = "I Recieved Your SMS";

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();

        Object messages[] = (Object[]) bundle.get("pdus");
        SmsMessage smsMessage[] = new SmsMessage[messages.length];
        for (int n = 0; n < messages.length; n++) {
            smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
            address = smsMessage[n].getOriginatingAddress();
        }

        Toast toast = Toast.makeText(context,"Received SMS: " +
                 smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
        toast.show();
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(address, null, smsMe, null, null);
    }
}

我不知道问题是什么。以及为什么它在真实设备上无法正常工作。

5 个答案:

答案 0 :(得分:2)

尝试使用此代码发送短信。

//---sends an SMS---
private void sendSMS(String phoneNumber, String message)
{        
    PendingIntent pi = PendingIntent.getActivity(this, 0,
        new Intent(this, class_name.class), 0);                
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, pi, null);        
}    

}

答案 1 :(得分:1)

您是否已添加将短信发送到AndroidManifest.xml - 文件的权限?

<manifest ...>
    <uses-permission android:name="android.permission.SEND_SMS">
    </uses-permission>
</manifest>

这些是related permissions

SEND_SMS        Allows an application to send SMS messages.
BROADCAST_SMS   Allows an application to broadcast an SMS receipt notification
READ_SMS        Allows an application to read SMS messages.
RECEIVE_SMS     Allows an application to monitor incoming SMS messages, to record or perform processing on them.
WRITE_SMS       Allows an application to write SMS messages.

正如Dya's answer建议的那样,使用PendingIntent,可以调试sendTextMessage()-method上的操作。

错误代码如下:

Activity.RESULT_OK
Activity.RESULT_ERROR_GENERIC_FAILURE
Activity.RESULT_ERROR_RADIO_OFF
Activity.RESULT_ERROR_NULL_PDU

根据this tutorial(以及Mo Al Sh's answer),您可以尝试另外一种发送短信的内置方式:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

答案 2 :(得分:1)

确保您已在 manifest.xml 中输入;

<receiver android:name=".ListenerSms">
   <intent-filter ><action android:name="android.provider.Telephony.SMS_RECEIVED"/>
   </intent-filter>
</receiver>

答案 3 :(得分:0)

您是否检查过您是否拥有短信权限

  

uses-permission android:name =“android.permission.SEND_SMS”

在您的清单文件中?

您也可以尝试内置短信应用程序:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
     

sendIntent.putExtra(“sms_body”,“默认内容”);

     

sendIntent.setType( “vnd.android-DIR / MMS-SMS”);

     

startActivity(sendIntent);

答案 4 :(得分:0)

您无法发送邮件的原因是您未包含:

message_sc_address sms.sendTextMessage(address, message_sc_address, smsMe, null, null);

您可以从平板电脑/手机短信部分获取此消息地址。