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 >> ");
}