【问题标题】:Auto SMS does not work after long inactivity of app应用程序长时间不活动后自动短信不起作用
【发布时间】:2017-09-22 06:19:34
【问题描述】:

在这里,我制作了一个应用程序,它可以监听收到的每条短信,然后根据定义的条件发送短信。这个应用程序在有限的时间内完美运行,没有问题。但在应用程序长时间不活动后(即 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>

【问题讨论】:

  • 在清单文件中设置高优先级
  • 你是如何在清单中声明的​​?
  • 亲爱的乔迪,我有清单。
  • 亲爱的 Keerthisvasav,是的,它的优先级最高为 999
  • 好的,让我检查一下,然后回复你

标签: java android sms broadcast receiver


【解决方案1】:

在 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>

所以,它具有高优先级,然后它会在应用程序的长时间处于活动状态后工作

【讨论】:

  • @Keerthisvasan 这已经实现了高优先级,不包括代码 android:exported="true"。我将添加此行并让您知道谢谢。
  • @simon 拿到了 OP 啊
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2012-10-05
  • 2015-06-30
  • 2020-01-30
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多