Home | History | Annotate | Download | only in showwhenlocked
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License
     15  */
     16 
     17 package com.android.showwhenlocked;
     18 
     19 import android.app.Activity;
     20 import android.app.KeyguardManager;
     21 import android.content.Intent;
     22 import android.os.Bundle;
     23 import android.util.Log;
     24 
     25 /**
     26  * Sample app to test the manifest attrs {@link android.R.attr#showWhenLocked}
     27  * and {@link android.R.attr#turnScreenOn}.
     28  *
     29  * <p>Run with adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity to test
     30  * when the phone has a keyguard enabled and/or the screen is off.
     31  *
     32  * Use the extra {@link #EXTRA_SHOW_WHEN_LOCKED} and {@link #EXTRA_TURN_SCREEN_ON} to test
     33  * multiple scenarios.
     34  *
     35  * Ex: adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity --ez \
     36  *      showWhenLocked false \
     37  *      setTurnScreenOnAtStop false
     38  *
     39  * Note: Behavior may change if values are set to true after the Activity is already created
     40  * and only brought to the front. For example, turnScreenOn only takes effect on the next launch
     41  * if set using the extra value.
     42  */
     43 public class ShowWhenLockedActivity extends Activity {
     44     private static final String TAG = ShowWhenLockedActivity.class.getSimpleName();
     45 
     46     /**
     47      * The value set for this extra sets {@link #setShowWhenLocked(boolean)} as soon as the app
     48      * is launched. This may cause delays in when the value set takes affect.
     49      */
     50     private static final String EXTRA_SHOW_WHEN_LOCKED = "showWhenLocked";
     51 
     52     /**
     53      * The value set for this extra sets {@link #setTurnScreenOn(boolean)} as soon as the app
     54      * is launched. This may cause delays in when the value set takes affect.
     55      */
     56     private static final String EXTRA_TURN_SCREEN_ON = "turnScreenOn";
     57 
     58     /**
     59      * The value set for this extra will call {@link #setShowWhenLocked(boolean)} at onStop so
     60      * it take effect on the next launch.
     61      */
     62     private static final String EXTRA_SHOW_WHEN_LOCKED_STOP = "setShowWhenLockedAtStop";
     63 
     64     /**
     65      * The value set for this extra will call {@link #setTurnScreenOn(boolean)} at onStop so
     66      * it take effect on the next launch.
     67      */
     68     private static final String EXTRA_TURN_SCREEN_ON_STOP = "setTurnScreenOnAtStop";
     69 
     70     /**
     71      * The value set for this extra will call
     72      * {@link KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)}
     73      * as soon as the app is launched.
     74      */
     75     private static final String EXTRA_DISMISS_KEYGUARD = "dismissKeyguard";
     76 
     77     private boolean showWhenLockedAtStop = true;
     78     private boolean turnScreenOnAtStop = true;
     79 
     80     private KeyguardManager mKeyguardManager;
     81 
     82     @Override
     83     public void onCreate(Bundle savedInstanceState) {
     84         super.onCreate(savedInstanceState);
     85         Log.v(TAG, "onCreate");
     86         mKeyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
     87         handleExtras(getIntent().getExtras());
     88     }
     89 
     90     @Override
     91     protected void onStart() {
     92         super.onStart();
     93         Log.v(TAG, "onStart");
     94     }
     95 
     96     @Override
     97     protected void onNewIntent(Intent intent) {
     98         super.onNewIntent(intent);
     99         handleExtras(intent.getExtras());
    100     }
    101 
    102     @Override
    103     protected void onResume() {
    104         super.onResume();
    105         Log.v(TAG, "onResume");
    106     }
    107 
    108     @Override
    109     protected void onPause() {
    110         super.onPause();
    111         Log.v(TAG, "onPause");
    112     }
    113 
    114     @Override
    115     protected void onStop() {
    116         super.onStop();
    117         Log.v(TAG, "onStop");
    118 
    119         setShowWhenLocked(showWhenLockedAtStop);
    120         setTurnScreenOn(turnScreenOnAtStop);
    121     }
    122 
    123     @Override
    124     protected void onDestroy() {
    125         super.onDestroy();
    126         Log.v(TAG, "onDestroy");
    127     }
    128 
    129     private void handleExtras(Bundle extras) {
    130         if (extras == null) {
    131             return;
    132         }
    133 
    134         if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED)) {
    135             boolean showWhenLocked = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED, true);
    136             Log.v(TAG, "Setting showWhenLocked to " + showWhenLocked);
    137             setShowWhenLocked(showWhenLocked);
    138         }
    139 
    140         if (extras.containsKey(EXTRA_TURN_SCREEN_ON)) {
    141             boolean turnScreenOn = extras.getBoolean(EXTRA_TURN_SCREEN_ON, true);
    142             Log.v(TAG, "Setting turnScreenOn to " + turnScreenOn);
    143             setTurnScreenOn(turnScreenOn);
    144         }
    145 
    146         if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED_STOP)) {
    147             showWhenLockedAtStop = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED_STOP, true);
    148             Log.v(TAG, "Setting showWhenLockedAtStop to " + showWhenLockedAtStop);
    149         }
    150 
    151         if (extras.containsKey(EXTRA_TURN_SCREEN_ON_STOP)) {
    152             turnScreenOnAtStop = extras.getBoolean(EXTRA_TURN_SCREEN_ON_STOP, true);
    153             Log.v(TAG, "Setting turnScreenOnAtStop to " + turnScreenOnAtStop);
    154         }
    155 
    156         if (extras.containsKey(EXTRA_DISMISS_KEYGUARD)) {
    157             if (extras.getBoolean(EXTRA_DISMISS_KEYGUARD, false)) {
    158                 Log.v(TAG, "Requesting dismiss keyguard");
    159                 mKeyguardManager.requestDismissKeyguard(this, null);
    160             }
    161         }
    162     }
    163 }
    164 
    165