Android 安卓广播短信

Android 安卓广播短信,android,Android,我想在收到短信时打开应用程序。 我尝试使用清单声明的接收者来处理这个问题 这是我的代码 <AndroidManifest.xml> <receiver android:name=".service.SMSReceiver" android:enabled="true" android:exported="true" android:per

我想在收到短信时打开应用程序。 我尝试使用清单声明的接收者来处理这个问题

这是我的代码

<AndroidManifest.xml>
    
    <receiver
        android:name=".service.SMSReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
此代码仅在应用程序为onPause()时有效。 我想工作,即使应用程序被终止


当安卓9收到短信时,终止的应用程序可能会自动打开吗?

不,你不能这样做。Android在广播接收器上设置了某些限制

有一些应用程序无法收听的广播,其中也包括短信广播

你可以找到更多关于


您的应用程序在终止时可以收听一些广播,您可以找到列表

您可能会从这篇关于广播接收器的老文章中得到一些信息:
  @Override
public void onReceive(Context context, Intent intent) {

    packageManager = context.getPackageManager();

    if("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())) {

        Bundle bundle = intent.getExtras();
        Object[] messages = (Object[]) bundle.get("pdus");
        for (Object pdu : messages)
        {
            SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
            if(message == null)
            {
                Log.e(TAG,"message is null");
                break;
            }
            smsSender = message.getDisplayOriginatingAddress();
            if(smsSender.compareTo(number)==0)
            {
                receivedData = new Date(message.getTimestampMillis());

                smsBody = message.getDisplayMessageBody();
                Log.i(TAG, "onReceive: "+smsBody);
                SendToActivity(context,smsSender,smsBody,receivedData);
            }

        }
    }
}
 private void SendToActivity(Context context, String sender, String contents, Date receivedDate) {
    Log.i(TAG, "SendToActivity: TEST ");

    Intent intent = new Intent(context, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|
            Intent.FLAG_ACTIVITY_SINGLE_TOP|
            Intent.FLAG_ACTIVITY_CLEAR_TOP);

    intent.putExtra("contents",contents);
    context.startActivity(intent);
    Log.i(TAG, "SendToActivity: RUN >>  ");
    
}