xref: /aosp_15_r20/development/samples/DataWiper/src/com.example.android.datawiper/MyMain.java (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker /*
2*90c8c64dSAndroid Build Coastguard Worker  * Copyright (C) 2017 The Android Open Source Project
3*90c8c64dSAndroid Build Coastguard Worker  *
4*90c8c64dSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*90c8c64dSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*90c8c64dSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*90c8c64dSAndroid Build Coastguard Worker  *
8*90c8c64dSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*90c8c64dSAndroid Build Coastguard Worker  *
10*90c8c64dSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*90c8c64dSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*90c8c64dSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*90c8c64dSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*90c8c64dSAndroid Build Coastguard Worker  * limitations under the License.
15*90c8c64dSAndroid Build Coastguard Worker  */
16*90c8c64dSAndroid Build Coastguard Worker package com.example.android.datawiper;
17*90c8c64dSAndroid Build Coastguard Worker 
18*90c8c64dSAndroid Build Coastguard Worker import android.app.Activity;
19*90c8c64dSAndroid Build Coastguard Worker import android.app.AlertDialog;
20*90c8c64dSAndroid Build Coastguard Worker import android.app.admin.DevicePolicyManager;
21*90c8c64dSAndroid Build Coastguard Worker import android.content.ComponentName;
22*90c8c64dSAndroid Build Coastguard Worker import android.content.Context;
23*90c8c64dSAndroid Build Coastguard Worker import android.content.DialogInterface;
24*90c8c64dSAndroid Build Coastguard Worker import android.content.Intent;
25*90c8c64dSAndroid Build Coastguard Worker import android.os.Bundle;
26*90c8c64dSAndroid Build Coastguard Worker import android.util.Log;
27*90c8c64dSAndroid Build Coastguard Worker import android.view.View;
28*90c8c64dSAndroid Build Coastguard Worker import android.widget.TextView;
29*90c8c64dSAndroid Build Coastguard Worker 
30*90c8c64dSAndroid Build Coastguard Worker public class MyMain extends Activity {
31*90c8c64dSAndroid Build Coastguard Worker     private static final int REQUEST_CODE_ENABLE_ADMIN = 1;
32*90c8c64dSAndroid Build Coastguard Worker 
33*90c8c64dSAndroid Build Coastguard Worker     @Override
onCreate(Bundle savedInstanceState)34*90c8c64dSAndroid Build Coastguard Worker     protected void onCreate(Bundle savedInstanceState) {
35*90c8c64dSAndroid Build Coastguard Worker         super.onCreate(savedInstanceState);
36*90c8c64dSAndroid Build Coastguard Worker 
37*90c8c64dSAndroid Build Coastguard Worker         setContentView(R.layout.main);
38*90c8c64dSAndroid Build Coastguard Worker     }
39*90c8c64dSAndroid Build Coastguard Worker 
40*90c8c64dSAndroid Build Coastguard Worker     @Override
onResume()41*90c8c64dSAndroid Build Coastguard Worker     protected void onResume() {
42*90c8c64dSAndroid Build Coastguard Worker         super.onResume();
43*90c8c64dSAndroid Build Coastguard Worker 
44*90c8c64dSAndroid Build Coastguard Worker         refreshUi();
45*90c8c64dSAndroid Build Coastguard Worker     }
46*90c8c64dSAndroid Build Coastguard Worker 
47*90c8c64dSAndroid Build Coastguard Worker     @Override
onActivityResult(int requestCode, int resultCode, Intent data)48*90c8c64dSAndroid Build Coastguard Worker     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
49*90c8c64dSAndroid Build Coastguard Worker         super.onActivityResult(requestCode, resultCode, data);
50*90c8c64dSAndroid Build Coastguard Worker 
51*90c8c64dSAndroid Build Coastguard Worker         refreshUi();
52*90c8c64dSAndroid Build Coastguard Worker     }
53*90c8c64dSAndroid Build Coastguard Worker 
refreshUi()54*90c8c64dSAndroid Build Coastguard Worker     private void refreshUi() {
55*90c8c64dSAndroid Build Coastguard Worker         final boolean isEnabled = MyAdmin.isEnabled(this);
56*90c8c64dSAndroid Build Coastguard Worker         ((TextView) findViewById(R.id.add_as_admin)).setText(
57*90c8c64dSAndroid Build Coastguard Worker                 isEnabled ? "Disable Admin" : "Enable Admin");
58*90c8c64dSAndroid Build Coastguard Worker         findViewById(R.id.wipe_data).setEnabled(isEnabled);
59*90c8c64dSAndroid Build Coastguard Worker     }
60*90c8c64dSAndroid Build Coastguard Worker 
onAddAsAdmin(View v)61*90c8c64dSAndroid Build Coastguard Worker     public void onAddAsAdmin(View v) {
62*90c8c64dSAndroid Build Coastguard Worker         if (MyAdmin.isEnabled(this)) {
63*90c8c64dSAndroid Build Coastguard Worker             MyAdmin.disable(this);
64*90c8c64dSAndroid Build Coastguard Worker         } else {
65*90c8c64dSAndroid Build Coastguard Worker             enableAdmin();
66*90c8c64dSAndroid Build Coastguard Worker         }
67*90c8c64dSAndroid Build Coastguard Worker         refreshUi();
68*90c8c64dSAndroid Build Coastguard Worker     }
69*90c8c64dSAndroid Build Coastguard Worker 
enableAdmin()70*90c8c64dSAndroid Build Coastguard Worker     private void enableAdmin() {
71*90c8c64dSAndroid Build Coastguard Worker         Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
72*90c8c64dSAndroid Build Coastguard Worker         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, MyAdmin.getComponent(this));
73*90c8c64dSAndroid Build Coastguard Worker         startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
74*90c8c64dSAndroid Build Coastguard Worker     }
75*90c8c64dSAndroid Build Coastguard Worker 
restart(Context context)76*90c8c64dSAndroid Build Coastguard Worker     public static void restart(Context context) {
77*90c8c64dSAndroid Build Coastguard Worker         Intent intent = new Intent().setComponent(new ComponentName(context, MyMain.class))
78*90c8c64dSAndroid Build Coastguard Worker                 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
79*90c8c64dSAndroid Build Coastguard Worker                  | Intent.FLAG_ACTIVITY_CLEAR_TASK);
80*90c8c64dSAndroid Build Coastguard Worker         context.startActivity(intent);
81*90c8c64dSAndroid Build Coastguard Worker     }
82*90c8c64dSAndroid Build Coastguard Worker 
onWipeData(View v)83*90c8c64dSAndroid Build Coastguard Worker     public void onWipeData(View v) {
84*90c8c64dSAndroid Build Coastguard Worker         new AlertDialog.Builder(this)
85*90c8c64dSAndroid Build Coastguard Worker                 .setIcon(android.R.drawable.ic_dialog_alert)
86*90c8c64dSAndroid Build Coastguard Worker                 .setTitle("WARNING")
87*90c8c64dSAndroid Build Coastguard Worker                 .setMessage("This will wipe the device. Are you sure?  Do you want to proceed?"
88*90c8c64dSAndroid Build Coastguard Worker                     + "THIS CANNOT BE UNDONE.")
89*90c8c64dSAndroid Build Coastguard Worker                 .setCancelable(true)
90*90c8c64dSAndroid Build Coastguard Worker                 .setPositiveButton("WIPE NOW", new DialogInterface.OnClickListener() {
91*90c8c64dSAndroid Build Coastguard Worker                     @Override
92*90c8c64dSAndroid Build Coastguard Worker                     public void onClick(DialogInterface dialog, int which) {
93*90c8c64dSAndroid Build Coastguard Worker                         Log.w("DataWiper", "Wiping...");
94*90c8c64dSAndroid Build Coastguard Worker                         wipe();
95*90c8c64dSAndroid Build Coastguard Worker                     }
96*90c8c64dSAndroid Build Coastguard Worker                 })
97*90c8c64dSAndroid Build Coastguard Worker                 .show();
98*90c8c64dSAndroid Build Coastguard Worker     }
99*90c8c64dSAndroid Build Coastguard Worker 
wipe()100*90c8c64dSAndroid Build Coastguard Worker     private void wipe() {
101*90c8c64dSAndroid Build Coastguard Worker         ((DevicePolicyManager) (getSystemService(Context.DEVICE_POLICY_SERVICE)))
102*90c8c64dSAndroid Build Coastguard Worker                 .wipeData(0);
103*90c8c64dSAndroid Build Coastguard Worker     }
104*90c8c64dSAndroid Build Coastguard Worker }
105