【问题标题】:Receive SMS after closing App in Android安卓关闭App后接收短信
【发布时间】:2017-03-24 15:41:43
【问题描述】:

我需要阅读收到的短信。我为此使用BroadcastReceiver。它工作正常,但是当应用程序关闭时BroadcastReceiver 也会关闭。 这是我正在使用的代码。 清单

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

<!--other code -->
<receiver android:name=".IncomingSms">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

IncomingSms

public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

@Override
public void onReceive(Context context, Intent intent) {
    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {

        if (bundle != null) {

            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();

                Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);


                // Show Alert
                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context,
                        "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();

            } // end for loop
        } // bundle is null

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);

    }
}
}

代码运行良好,但即使应用程序关闭也希望它运行。我想随时阅读短信。意味着此广播运行生命周期在 App 卸载之前永远不会关闭。我想我需要为此提供服务,但我该怎么做,我是 android 新手。

【问题讨论】:

    标签: android broadcastreceiver android-service


    【解决方案1】:

    您需要为此编写IntentService,您可以在广播接收器中启动此类服务,因为广播接收器无法长时间执行。

    【讨论】:

    • 你能写一点代码吗,我该怎么做,很抱歉问,但我是新手。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多