diff options
| author | Dianne Hackborn <hackbod@google.com> | 2010-01-26 18:03:42 -0800 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2010-01-27 13:29:14 -0800 |
| commit | b885afe4e7376a21d354ca11d4873930d9cce9ea (patch) | |
| tree | 2b3956de4095040d0cd4b9fc285d7d4fee5fb4f9 /src/com/android | |
| parent | d4449a81cd5df3174186c1eaf6e6f471a86aa7b7 (diff) | |
| download | packages_apps_Settings-b885afe4e7376a21d354ca11d4873930d9cce9ea.tar.gz packages_apps_Settings-b885afe4e7376a21d354ca11d4873930d9cce9ea.tar.bz2 packages_apps_Settings-b885afe4e7376a21d354ca11d4873930d9cce9ea.zip | |
More device admin work:
- Show a warning before removing an admin, if desired.
- Additional message that can be shown when adding an admin.
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/settings/DeviceAdminAdd.java | 14 | ||||
| -rw-r--r-- | src/com/android/settings/DeviceAdminSettings.java | 52 |
2 files changed, 64 insertions, 2 deletions
diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java index 6763bd62a..b72a91db8 100644 --- a/src/com/android/settings/DeviceAdminAdd.java +++ b/src/com/android/settings/DeviceAdminAdd.java @@ -43,10 +43,12 @@ public class DeviceAdminAdd extends Activity { DevicePolicyManager mDPM; DeviceAdminInfo mDeviceAdmin; + CharSequence mAddMsgText; ImageView mActiveIcon; TextView mActiveName; TextView mActiveDescription; + TextView mAddMsg; TextView mActiveWarning; ViewGroup mAdminPolicies; @@ -103,11 +105,15 @@ public class DeviceAdminAdd extends Activity { return; } + mAddMsgText = getIntent().getCharSequenceExtra( + DevicePolicyManager.EXTRA_ADD_EXPLANATION); + setContentView(R.layout.device_admin_add); mActiveIcon = (ImageView)findViewById(R.id.active_icon); mActiveName = (TextView)findViewById(R.id.active_name); mActiveDescription = (TextView)findViewById(R.id.active_description); + mAddMsg = (TextView)findViewById(R.id.add_msg); mActiveWarning = (TextView)findViewById(R.id.active_warning); mAdminPolicies = (ViewGroup)findViewById(R.id.admin_policies); findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() { @@ -131,7 +137,15 @@ public class DeviceAdminAdd extends Activity { try { mActiveDescription.setText( mDeviceAdmin.loadDescription(getPackageManager())); + mActiveDescription.setVisibility(View.VISIBLE); } catch (Resources.NotFoundException e) { + mActiveDescription.setVisibility(View.GONE); + } + if (mAddMsgText != null) { + mAddMsg.setText(mAddMsgText); + mAddMsg.setVisibility(View.VISIBLE); + } else { + mAddMsg.setVisibility(View.GONE); } mActiveWarning.setText(getString(R.string.device_admin_warning, mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager()))); diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java index d05216d3d..e6da8e752 100644 --- a/src/com/android/settings/DeviceAdminSettings.java +++ b/src/com/android/settings/DeviceAdminSettings.java @@ -19,17 +19,22 @@ package com.android.settings; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; +import android.app.AlertDialog; import android.app.DeviceAdmin; import android.app.DeviceAdminInfo; import android.app.DevicePolicyManager; +import android.app.Dialog; import android.app.ListActivity; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.os.Bundle; +import android.os.Handler; +import android.os.RemoteCallback; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -46,8 +51,11 @@ import java.util.List; public class DeviceAdminSettings extends ListActivity { static final String TAG = "DeviceAdminSettings"; + static final int DIALOG_WARNING = 1; + DevicePolicyManager mDPM; DeviceAdminInfo mCurrentAdmin; + Handler mHandler; View mActiveLayout; ImageView mActiveIcon; @@ -64,6 +72,7 @@ public class DeviceAdminSettings extends ListActivity { mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE); mCurrentAdmin = mDPM.getActiveAdminInfo(); + mHandler = new Handler(getMainLooper()); setContentView(R.layout.device_admin_settings); @@ -74,8 +83,23 @@ public class DeviceAdminSettings extends ListActivity { findViewById(R.id.remove_button).setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (mCurrentAdmin != null) { - mDPM.removeActiveAdmin(mCurrentAdmin.getComponent()); - finish(); + mDPM.getRemoveWarning(mCurrentAdmin.getComponent(), + new RemoteCallback(mHandler) { + @Override + protected void onResult(Bundle bundle) { + CharSequence msg = bundle != null + ? bundle.getCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING) + : null; + if (msg == null) { + mDPM.removeActiveAdmin(mCurrentAdmin.getComponent()); + finish(); + } else { + Bundle args = new Bundle(); + args.putCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING, msg); + showDialog(DIALOG_WARNING, args); + } + } + }); } } }); @@ -118,6 +142,30 @@ public class DeviceAdminSettings extends ListActivity { updateLayout(); } + @Override + protected Dialog onCreateDialog(int id, Bundle args) { + switch (id) { + case DIALOG_WARNING: { + CharSequence msg = args.getCharSequence(DeviceAdmin.EXTRA_DISABLE_WARNING); + AlertDialog.Builder builder = new AlertDialog.Builder( + DeviceAdminSettings.this); + builder.setMessage(msg); + builder.setPositiveButton(R.string.dlg_ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + mDPM.removeActiveAdmin(mCurrentAdmin.getComponent()); + finish(); + } + }); + builder.setNegativeButton(R.string.dlg_cancel, null); + return builder.create(); + } + default: + return super.onCreateDialog(id, args); + + } + } + void updateLayout() { if (mCurrentAdmin != null) { mActiveLayout.setVisibility(View.VISIBLE); |
