Auto SMS在APP的长时间不活动之后无法正常工作



在这里我制作了应用程序,该应用会收到每个SMS收到的收到,然后按照条件定义发送SMS。这个应用程序在有限的时间内完美地奏效了。但是,在APP的长时间不活动(即12小时(之后,它不会为任何SMS接收到任何SMS。在这种不活动期间,用户使用他的手机拨打电话,但对该应用程序没有任何作用。如果我看到应用程序信息状态,则表明应用程序正在运行。由于它在开始时工作正常,但后来仅响应,因此看起来代码没有任何问题。请帮助我了解这个问题。任何专家建议非常欢迎。

    public class IncommingSMS2 extends BroadcastReceiver {
    public static String phoneNumber;
    Timer timer = new Timer();
     public void onReceive(final Context context, Intent intent) {
         Bundle bundle = intent.getExtras();
        try {
            if (bundle != null) {
                 Object[] pdusObj = (Object[]) bundle.get("pdus");
                for (int i = 0; i < pdusObj.length; i++) {
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String message = currentMessage.getDisplayMessageBody();
                    Log.i("SmsReceiver", "senderNum: " + phoneNumber + "; message: " );
                    if (Objects.equals(message, "Where")) {
                        SmsManager smsManager = SmsManager.getDefault();
                                              smsManager.sendTextMessage(phoneNumber, null, "test", null, null);
                    }
                } // bundle is null
            }
        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" + e);
        }
    }
    }  

在这里我有清楚。

    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permiss‌​ion>                                                     
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission‌​>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <receiver android:name=".IncommingSMS2">
    <intent-filter android:priority="999">
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
    </receiver>

在Android清单文件中给予这样的给予

  <uses-permission android:name="android.permission.RECEIVE_SMS"/>
  <uses-permission android:name="android.permission.READ_SMS" /> 
  <uses-permission android:name="android.permission.SEND_SMS"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <receiver android:name=".IncommingSMS2" android:exported="true">
            <intent-filter android:priority="999">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
  </receiver>

因此,它具有很高的优先级,那么它将在应用程序的长期活动

之后起作用。

最新更新