blob: f7148318267694dfe10af63e8cebef1a367d351a [file] [log] [blame]
/*
* 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}.
*
* <p>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);
}
}
}
}