【发布时间】:2019-02-21 04:20:38
【问题描述】:
public class ScreenReceiver extends BroadcastReceiver {
private boolean screenOff;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
screenOff = true;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOff = false;
}
}
<receiver
android:name=".ScreenReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.DREAMING_STARTED" />
<action android:name="android.intent.action.DREAMING_STOPPED" />
<action android:name="android.intent.action.CLOSE_SYSTEM_DIALOGS" />
<action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
<action android:name="android." />
</intent-filter>
</receiver>
在 naught 和 oreo 设备上没有收到任何回调,在棉花糖设备上试过它工作正常。但在 oreo 设备上它不工作,并且电池连接和网络更改接收器不工作。
【问题讨论】:
-
从牛轧糖开始,做了后台优化。面向 Android 8.0 或更高版本的应用无法再在其清单中为隐式广播注册广播接收器。
-
我知道行为变化,但我需要它来获取所有操作回调。有没有办法做到这一点。
-
在搜索后我发现这是正确的方法github.com/devggaurav/…
标签: java android broadcastreceiver android-8.0-oreo android-7.0-nougat