android:广播接收器用于屏幕和屏幕关闭吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我的应用程序实际上是一个锁屏应用程序,它通过使用可编程方式需要始终运行:S

有没有办法解决它?

我在清单中尝试以下内容:

<receiver android:name=".MyBroadCastReciever">
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_OFF"/>
        <action android:name="android.intent.action.SCREEN_ON"/>
    </intent-filter>
</receiver>

和简单的MyBroadCastReciever类:

public class MyBroadCastReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Log.i("Check","Screen went OFF");
            Toast.makeText(context, "screen OFF",Toast.LENGTH_LONG).show();
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Log.i("Check","Screen went ON");
            Toast.makeText(context, "screen ON",Toast.LENGTH_LONG).show();
        }
    }
}
提问于
用户回答回答于

屏幕开启和关闭的两个操作是:

android.intent.action.SCREEN_OFF
android.intent.action.SCREEN_ON

对于这个问题,你必须创建一个长时间运行的服务,为这些意图注册一个本地广播接收器。如果你这样做,那么只有当你的服务运行时,你的应用程序才会查找屏幕,这不会刺激用户。

一个简单的代码片段就像这样:

IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mScreenStateReceiver, screenStateFilter);

不要忘记在服务onDestroy中注销接收者:

unregisterReceiver(mScreenStateReceiver);
用户回答回答于

你需要创建一个后台服务来检查它。然后你可以通过编程来设置它。

扫码关注云+社区