165 lines
5.5 KiB
Java
165 lines
5.5 KiB
Java
/*
|
|
* 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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|