广播接收器在我杀死我的应用程序时可以完美地工作,它可以在后台工作。但是我 安装了我的真实设备,当我杀死应用程序时并没有。
> Java Code
public class BackgroundService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Send Message",Toast.LENGTH_LONG).show();
}
}
> MainActivity
BackgroundService backgroundService;
@Override
protected void onStart() {
super.onStart();
IntentFilter intentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(backgroundService,intentFilter);
}
> Manifests
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<receiver android:name=".BackgroundService">
<intent-filter android:priority="999">
<action android:name="android.intent.action.SCREEN_ON"/>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
答案 0 :(得分:1)
从android 8开始,如果您有任何隐式广播,则必须将其注册在活动中而不是清单中 就您而言
<action android:name="android.intent.action.SCREEN_ON"/> <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
似乎是隐式广播。尝试使用 intentFilter.addAction(您的操作)
在活动类中注册它们还通过 onStop 取消注册接收者 调用 unregisterReceiver(接收器实例)