1
public class myReceiver extends BroadcastReceiver {
    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(final Context context, Intent recievedIntent) {

        if (recievedIntent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            wasScreenOn = false;

            Intent intent = new Intent(context,
                    myActivity.class);
            intent.setAction(Intent.ACTION_MAIN);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            context.startActivity(intent
                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

        } else if (recievedIntent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            wasScreenOn = true;
        }
    }
}

アクション画面で呼び出した後のアクティビティ表示。

myActivity.class

KeyguardManager を使用して Keyguard を無効にし、サービスを開始します。サービスに受信者を登録します。ユーザーがデバイスをオフにするとACTION_SCREEN_OFFが呼び出され、ホームボタンをタップするとACTION_SCREEN_ONが呼び出されますが、ホームボタンを何度も押すと問題が発生します。

4

1 に答える 1