繁体   English   中英

如何确保启动后已发送SMS?

[英]How to insure that SMS has been sent after boot up?

设备启动完成后,我正在尝试发送短信。 IntentService内部,一条文本消息将被发送到一定数量,我使用PendingIntent来确保消息已发送。

有时将发送SMS,有时由于没有服务而失败,因此我尝试调用再次发送SMS的方法,直到获得发送,但它不起作用。

我也尝试使用唤醒锁,以便在发送SMS之前不会破坏该服务。 我应该怎么做才能确保SMS已发送? 我想尝试发送短信,直到服务准备就绪并且发送成功为止。

public class MyService extends IntentService {
PendingIntent sentPI;

public MyService() {
    super("check SIM card");

}

@Override
protected void onHandleIntent(Intent intent) {

    // pending intents to check SMS
    String SENT = "SMS_SENT";

    sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
            SENT), 0);
    // ---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode()) {

                Toast.makeText(getBaseContext(), "SMS sent",
                        Toast.LENGTH_SHORT).show();
                // Releasing wake lock
                WakeLocker.release();
                break;

            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

                Toast.makeText(getBaseContext(), "Generic failure",
                        Toast.LENGTH_SHORT).show();
                sendSMS();
                break;

            case SmsManager.RESULT_ERROR_NO_SERVICE:

                Toast.makeText(getBaseContext(), "No service",
                        Toast.LENGTH_SHORT).show();
                sendSMS();
                break;

            case SmsManager.RESULT_ERROR_NULL_PDU:

                Toast.makeText(getBaseContext(), "Null PDU",
                        Toast.LENGTH_SHORT).show();
                sendSMS();
                break;

            case SmsManager.RESULT_ERROR_RADIO_OFF:

                Toast.makeText(getBaseContext(), "Radio off",
                        Toast.LENGTH_SHORT).show();
                sendSMS();
                break;
            }
        }
    }, new IntentFilter(SENT));


    sendSMS();

}

DEVICE_BOOT_COMPLETED编写一个BroadcastReceiver ,每当您的设备重启时,它就会被触发。 Broadcastreceiver启动一个新服务,它将以所需的号码发送SMS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM