/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.showwhenlocked; import android.app.Activity; import android.app.KeyguardManager; import android.content.Intent; import android.os.Bundle; import android.util.Log; /** * Sample app to test the manifest attrs {@link android.R.attr#showWhenLocked} * and {@link android.R.attr#turnScreenOn}. * *

Run with adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity to test * when the phone has a keyguard enabled and/or the screen is off. * * Use the extra {@link #EXTRA_SHOW_WHEN_LOCKED} and {@link #EXTRA_TURN_SCREEN_ON} to test * multiple scenarios. * * Ex: adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity --ez \ * showWhenLocked false \ * setTurnScreenOnAtStop false * * Note: Behavior may change if values are set to true after the Activity is already created * and only brought to the front. For example, turnScreenOn only takes effect on the next launch * if set using the extra value. */ public class ShowWhenLockedActivity extends Activity { private static final String TAG = ShowWhenLockedActivity.class.getSimpleName(); /** * The value set for this extra sets {@link #setShowWhenLocked(boolean)} as soon as the app * is launched. This may cause delays in when the value set takes affect. */ private static final String EXTRA_SHOW_WHEN_LOCKED = "showWhenLocked"; /** * The value set for this extra sets {@link #setTurnScreenOn(boolean)} as soon as the app * is launched. This may cause delays in when the value set takes affect. */ private static final String EXTRA_TURN_SCREEN_ON = "turnScreenOn"; /** * The value set for this extra will call {@link #setShowWhenLocked(boolean)} at onStop so * it take effect on the next launch. */ private static final String EXTRA_SHOW_WHEN_LOCKED_STOP = "setShowWhenLockedAtStop"; /** * The value set for this extra will call {@link #setTurnScreenOn(boolean)} at onStop so * it take effect on the next launch. */ private static final String EXTRA_TURN_SCREEN_ON_STOP = "setTurnScreenOnAtStop"; /** * The value set for this extra will call * {@link KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)} * as soon as the app is launched. */ private static final String EXTRA_DISMISS_KEYGUARD = "dismissKeyguard"; private boolean showWhenLockedAtStop = true; private boolean turnScreenOnAtStop = true; private KeyguardManager mKeyguardManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v(TAG, "onCreate"); mKeyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); handleExtras(getIntent().getExtras()); } @Override protected void onStart() { super.onStart(); Log.v(TAG, "onStart"); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); handleExtras(intent.getExtras()); } @Override protected void onResume() { super.onResume(); Log.v(TAG, "onResume"); } @Override protected void onPause() { super.onPause(); Log.v(TAG, "onPause"); } @Override protected void onStop() { super.onStop(); Log.v(TAG, "onStop"); setShowWhenLocked(showWhenLockedAtStop); setTurnScreenOn(turnScreenOnAtStop); } @Override protected void onDestroy() { super.onDestroy(); Log.v(TAG, "onDestroy"); } private void handleExtras(Bundle extras) { if (extras == null) { return; } if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED)) { boolean showWhenLocked = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED, true); Log.v(TAG, "Setting showWhenLocked to " + showWhenLocked); setShowWhenLocked(showWhenLocked); } if (extras.containsKey(EXTRA_TURN_SCREEN_ON)) { boolean turnScreenOn = extras.getBoolean(EXTRA_TURN_SCREEN_ON, true); Log.v(TAG, "Setting turnScreenOn to " + turnScreenOn); setTurnScreenOn(turnScreenOn); } if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED_STOP)) { showWhenLockedAtStop = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED_STOP, true); Log.v(TAG, "Setting showWhenLockedAtStop to " + showWhenLockedAtStop); } if (extras.containsKey(EXTRA_TURN_SCREEN_ON_STOP)) { turnScreenOnAtStop = extras.getBoolean(EXTRA_TURN_SCREEN_ON_STOP, true); Log.v(TAG, "Setting turnScreenOnAtStop to " + turnScreenOnAtStop); } if (extras.containsKey(EXTRA_DISMISS_KEYGUARD)) { if (extras.getBoolean(EXTRA_DISMISS_KEYGUARD, false)) { Log.v(TAG, "Requesting dismiss keyguard"); mKeyguardManager.requestDismissKeyguard(this, null); } } } }