[英]Broadcast receiver working on emulator but not on working real device (Android Oreo)
广播接收器在我杀死我的应用程序时它工作得很好,它在后台工作。 但我安装了我的真实设备,当我杀死应用程序时却没有。
> 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>
从 android 8 开始,如果您有任何隐式广播,则必须在您的活动中注册它,而不是在清单中
<action android:name="android.intent.action.SCREEN_ON"/> <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
似乎是隐式广播。 尝试使用intentFilter.addAction(Your Action)在您的活动类中注册它们
还可以通过调用unregisterReceiver(Receiver instance)在onStop 中取消注册您的接收器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.