0

カスタムロックスクリーンを使用してカスタムホーム画面を作成しています。

画面がオフになると、ロック画面(アクティビティ)を起動しますが、ロック画面が( "finish()"によって)強制終了されると、実際のアクティビティではなく、ホーム画面apkの最後のアクティビティに戻ります(apk)画面が消える直前に表示されていました。

たとえば、電卓アプリケーションまたは時計アプリケーションを使用していて、ロック画面がオンになっている場合、ロック画面のアクティビティが終了すると、電卓/時計に戻りません。

ここで、画面のオン/オフイベントを受信するためのロック画面(メインランチャーアクティビティ)を登録します。

private void doLockScreenOperations()
{
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
    lock.disableKeyguard();

    IntentFilter lockfiFilter = new IntentFilter();
    lockfiFilter.addAction(Intent.ACTION_SCREEN_OFF);
    lockfiFilter.addAction(Intent.ACTION_SCREEN_ON);
    getApplicationContext().registerReceiver(new LockScreenReceiver(), lockfiFilter);
}

これがレシーバー自体で、ロック画面のアクティビティを起動します。

public class LockScreenReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();

        if (action.equals(Intent.ACTION_SCREEN_OFF))
        {
            if (LockScreenActivity.isLockScreenAlive == false)
            {
                Intent lockIntent = new Intent(context, LockScreenActivity.class);
                lockIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(lockIntent);
            }
        }

        else if (action.equals(Intent.ACTION_SCREEN_ON))
        {

        }
    }
}

LockScreenActivityは、現時点では、ボタンがクリックされたときにfinish()と呼ばれるボタンを使用する単純なアクティビティです。

これを修正する方法がわかりません。

前もって感謝します!

4

1 に答える 1

1

完全にはわかりませんが、これを考慮する必要があります: Intent.FLAG_ACTIVITY_NEW_TASK はビューの新しいグループを開始するため、論理的には、ロック画面を終了するときに戻る前のアクティビティがありません。

あなたが実際にそれを行う方法と非常によく似ています。しかし、残念ながらこれらの問題があります:

于 2012-02-15T13:13:41.037 に答える