Skip to content

Commit c969296

Browse files
committed
Added options to start / stop lock-task mode using adb.
Example: 1. Set DO: $ adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver 2. Set lock-task packages $ adb shell dumpsys activity service com.afwsamples.testdpc set-lock-task-packages com.afwsamples.testdpc 3. Launch TestDPC in lock-task mode: $ adb shell am start -e lock-task-mode start com.afwsamples.testdpc/.PolicyManagementActivity 4. Stop lock-task mode: $ adb shell dumpsys activity com.afwsamples.testdpc/.PolicyManagementActivity lock-task-mode stop Test: see above Bug: 171350084 Bug: 181238156 Change-Id: I2b0151c0fe0bb602cf1e3b7d8e9f4e796b229948 (cherry picked from commit cdf0fdddf910f800efdc72d64cee32fbde856e73)
1 parent 8c27a23 commit c969296

File tree

2 files changed

+82
-1
lines changed

2 files changed

+82
-1
lines changed

app/src/main/java/com/afwsamples/testdpc/PolicyManagementActivity.java

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.app.Fragment;
2121
import android.app.FragmentManager;
2222
import android.os.Bundle;
23+
import android.util.Log;
2324
import android.view.Menu;
2425
import android.view.MenuItem;
2526

@@ -38,6 +39,15 @@
3839
public class PolicyManagementActivity extends DumpableActivity implements
3940
FragmentManager.OnBackStackChangedListener {
4041

42+
private static final String TAG = PolicyManagementActivity.class.getSimpleName();
43+
44+
private static final String CMD_LOCK_TASK_MODE = "lock-task-mode";
45+
private static final String LOCK_MODE_ACTION_START = "start";
46+
private static final String LOCK_MODE_ACTION_STATUS = "status";
47+
private static final String LOCK_MODE_ACTION_STOP = "stop";
48+
49+
private boolean mLockTaskMode;
50+
4151
@Override
4252
public void onCreate(Bundle savedInstanceState) {
4353
super.onCreate(savedInstanceState);
@@ -73,6 +83,16 @@ public boolean onMenuItemSelected(int featureId, MenuItem item) {
7383
return false;
7484
}
7585

86+
@Override
87+
protected void onResume() {
88+
super.onResume();
89+
90+
String lockModeCommand = getIntent().getStringExtra(CMD_LOCK_TASK_MODE);
91+
if (lockModeCommand != null) {
92+
setLockTaskMode(lockModeCommand);
93+
}
94+
}
95+
7696
@Override
7797
public void onBackStackChanged() {
7898
// Show the up button in actionbar if back stack has any entry.
@@ -98,4 +118,65 @@ public void onDestroy() {
98118
getFragmentManager().removeOnBackStackChangedListener(this);
99119
}
100120

121+
@Override
122+
public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
123+
if (args != null && args.length > 0 && args[0].equals(CMD_LOCK_TASK_MODE)) {
124+
String action = args.length == 1 ? LOCK_MODE_ACTION_STATUS : args[1];
125+
switch (action) {
126+
case LOCK_MODE_ACTION_START:
127+
pw.println("Starting lock-task mode");
128+
startLockTaskMode();
129+
break;
130+
case LOCK_MODE_ACTION_STOP:
131+
pw.println("Stopping lock-task mode");
132+
stopLockTaskMode();
133+
break;
134+
case LOCK_MODE_ACTION_STATUS:
135+
dumpLockModeStatus(pw);
136+
break;
137+
default:
138+
pw.printf("Invalid lock-task mode action: %s\n", action);
139+
}
140+
return;
141+
}
142+
pw.print(prefix); dumpLockModeStatus(pw);
143+
144+
super.dump(prefix, fd, pw, args);
145+
}
146+
147+
private void startLockTaskMode() {
148+
if (mLockTaskMode) Log.w(TAG, "startLockTaskMode(): mLockTaskMode already true");
149+
mLockTaskMode = true;
150+
151+
Log.i(TAG, "startLockTaskMode(): calling Activity.startLockTask()");
152+
startLockTask();
153+
}
154+
155+
private void stopLockTaskMode() {
156+
if (!mLockTaskMode) Log.w(TAG, "startLockTaskMode(): mLockTaskMode already false");
157+
mLockTaskMode = false;
158+
159+
Log.i(TAG, "stopLockTaskMode(): calling Activity.stopLockTask()");
160+
stopLockTask();
161+
}
162+
163+
private void dumpLockModeStatus(PrintWriter pw) {
164+
pw.printf("lock-task mode: %b\n", mLockTaskMode);
165+
}
166+
167+
private void setLockTaskMode(String action) {
168+
switch (action) {
169+
case LOCK_MODE_ACTION_START:
170+
startLockTaskMode();
171+
break;
172+
case LOCK_MODE_ACTION_STOP:
173+
stopLockTaskMode();
174+
break;
175+
case LOCK_MODE_ACTION_STATUS:
176+
Log.d(TAG, "lock-task mode status: " + mLockTaskMode);
177+
break;
178+
default:
179+
Log.e(TAG, "invalid lock-task action: " + action);
180+
}
181+
}
101182
}

app/src/main/java/com/afwsamples/testdpc/common/DumpableActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
public abstract class DumpableActivity extends Activity {
2929

3030
@Override
31-
public final void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
31+
public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
3232
boolean quietMode = Dumpable.isQuietMode(args);
3333
if (quietMode) {
3434
List<Fragment> fragments = getFragmentManager().getFragments();

0 commit comments

Comments
 (0)