Loading res/layout/device_admin_add.xml +9 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,15 @@ android:text="@string/cancel" style="?android:attr/buttonBarButtonStyle" android:layout_height="wrap_content" /> <Button android:id="@+id/uninstall_button" android:layout_width="0dip" android:layout_gravity="end" android:layout_weight="1" android:maxLines="2" android:text="@string/uninstall_device_admin" style="?android:attr/buttonBarButtonStyle" android:layout_height="wrap_content" android:visibility="gone" /> <Button android:id="@+id/action_button" android:layout_width="0dip" android:layout_gravity="start" Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -4474,6 +4474,8 @@ <string name="active_device_admin_msg">Device administrator</string> <!-- Label for button to remove the active device admin --> <string name="remove_device_admin">Deactivate</string> <!-- Label for button to uninstall the device admin application [CHAR LIMIT=40] --> <string name="uninstall_device_admin">Uninstall</string> <!-- Label for screen showing to select device policy --> <string name="select_device_admin_msg">Device administrators</string> <!-- Message when there are no available device admins to display --> Loading src/com/android/settings/DeviceAdminAdd.java +45 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Resources; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -74,6 +75,8 @@ public class DeviceAdminAdd extends Activity { private static final int MAX_ADD_MSG_LINES_LANDSCAPE = 2; private static final int MAX_ADD_MSG_LINES = 15; private static final int REQUEST_CODE_UNINSTALL = 1; Handler mHandler; DevicePolicyManager mDPM; Loading @@ -93,6 +96,7 @@ public class DeviceAdminAdd extends Activity { TextView mSupportMessage; ViewGroup mAdminPolicies; Button mActionButton; Button mUninstallButton; Button mCancelButton; boolean mAdding; Loading Loading @@ -285,6 +289,7 @@ public class DeviceAdminAdd extends Activity { mAdminWarning = (TextView) findViewById(R.id.admin_warning); mAdminPolicies = (ViewGroup) findViewById(R.id.admin_policies); mSupportMessage = (TextView) findViewById(R.id.admin_support_message); mCancelButton = (Button) findViewById(R.id.cancel_button); mCancelButton.setFilterTouchesWhenObscured(true); mCancelButton.setOnClickListener(new View.OnClickListener() { Loading @@ -294,6 +299,17 @@ public class DeviceAdminAdd extends Activity { finish(); } }); mUninstallButton = (Button) findViewById(R.id.uninstall_button); mUninstallButton.setFilterTouchesWhenObscured(true); mUninstallButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_UNINSTALLED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); uninstall(); } }); mActionButton = (Button) findViewById(R.id.action_button); mActionButton.setFilterTouchesWhenObscured(true); mActionButton.setOnClickListener(new View.OnClickListener() { Loading Loading @@ -448,6 +464,18 @@ public class DeviceAdminAdd extends Activity { } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CODE_UNINSTALL: if (resultCode == RESULT_OK) { finish(); } return; } super.onActivityResult(requestCode, resultCode, data); } void updateInterface() { mAdminIcon.setImageDrawable(mDeviceAdmin.loadIcon(getPackageManager())); mAdminName.setText(mDeviceAdmin.loadLabel(getPackageManager())); Loading Loading @@ -516,6 +544,9 @@ public class DeviceAdminAdd extends Activity { setTitle(getText(R.string.add_device_admin_msg)); } mActionButton.setText(getText(R.string.add_device_admin)); if (isAdminUninstallable()) { mUninstallButton.setVisibility(View.VISIBLE); } mSupportMessage.setVisibility(View.GONE); mAdding = true; } Loading Loading @@ -564,4 +595,18 @@ public class DeviceAdminAdd extends Activity { UserHandle.getUserId(adminInfo.getActivityInfo().applicationInfo.uid)); return info != null ? info.isManagedProfile() : false; } private boolean isAdminUninstallable() { // System apps can't be uninstalled. return !mDeviceAdmin.getActivityInfo().applicationInfo.isSystemApp(); } private void uninstall() { final Uri packageURI = Uri.parse("package:" + mDeviceAdmin.getPackageName()); final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI); uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false); uninstallIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true); startActivityForResult(uninstallIntent, REQUEST_CODE_UNINSTALL); } } src/com/android/settings/EventLogTags.logtags +3 −0 Original line number Diff line number Diff line Loading @@ -10,3 +10,6 @@ option java_package com.android.settings # log whether user declined activation of device admin 90202 exp_det_device_admin_declined_by_user (app_signature|3) # log whether user uninstalled device admin on activation screen 90203 exp_det_device_admin_uninstalled_by_user (app_signature|3) Loading
res/layout/device_admin_add.xml +9 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,15 @@ android:text="@string/cancel" style="?android:attr/buttonBarButtonStyle" android:layout_height="wrap_content" /> <Button android:id="@+id/uninstall_button" android:layout_width="0dip" android:layout_gravity="end" android:layout_weight="1" android:maxLines="2" android:text="@string/uninstall_device_admin" style="?android:attr/buttonBarButtonStyle" android:layout_height="wrap_content" android:visibility="gone" /> <Button android:id="@+id/action_button" android:layout_width="0dip" android:layout_gravity="start" Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -4474,6 +4474,8 @@ <string name="active_device_admin_msg">Device administrator</string> <!-- Label for button to remove the active device admin --> <string name="remove_device_admin">Deactivate</string> <!-- Label for button to uninstall the device admin application [CHAR LIMIT=40] --> <string name="uninstall_device_admin">Uninstall</string> <!-- Label for screen showing to select device policy --> <string name="select_device_admin_msg">Device administrators</string> <!-- Message when there are no available device admins to display --> Loading
src/com/android/settings/DeviceAdminAdd.java +45 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Resources; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -74,6 +75,8 @@ public class DeviceAdminAdd extends Activity { private static final int MAX_ADD_MSG_LINES_LANDSCAPE = 2; private static final int MAX_ADD_MSG_LINES = 15; private static final int REQUEST_CODE_UNINSTALL = 1; Handler mHandler; DevicePolicyManager mDPM; Loading @@ -93,6 +96,7 @@ public class DeviceAdminAdd extends Activity { TextView mSupportMessage; ViewGroup mAdminPolicies; Button mActionButton; Button mUninstallButton; Button mCancelButton; boolean mAdding; Loading Loading @@ -285,6 +289,7 @@ public class DeviceAdminAdd extends Activity { mAdminWarning = (TextView) findViewById(R.id.admin_warning); mAdminPolicies = (ViewGroup) findViewById(R.id.admin_policies); mSupportMessage = (TextView) findViewById(R.id.admin_support_message); mCancelButton = (Button) findViewById(R.id.cancel_button); mCancelButton.setFilterTouchesWhenObscured(true); mCancelButton.setOnClickListener(new View.OnClickListener() { Loading @@ -294,6 +299,17 @@ public class DeviceAdminAdd extends Activity { finish(); } }); mUninstallButton = (Button) findViewById(R.id.uninstall_button); mUninstallButton.setFilterTouchesWhenObscured(true); mUninstallButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { EventLog.writeEvent(EventLogTags.EXP_DET_DEVICE_ADMIN_UNINSTALLED_BY_USER, mDeviceAdmin.getActivityInfo().applicationInfo.uid); uninstall(); } }); mActionButton = (Button) findViewById(R.id.action_button); mActionButton.setFilterTouchesWhenObscured(true); mActionButton.setOnClickListener(new View.OnClickListener() { Loading Loading @@ -448,6 +464,18 @@ public class DeviceAdminAdd extends Activity { } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_CODE_UNINSTALL: if (resultCode == RESULT_OK) { finish(); } return; } super.onActivityResult(requestCode, resultCode, data); } void updateInterface() { mAdminIcon.setImageDrawable(mDeviceAdmin.loadIcon(getPackageManager())); mAdminName.setText(mDeviceAdmin.loadLabel(getPackageManager())); Loading Loading @@ -516,6 +544,9 @@ public class DeviceAdminAdd extends Activity { setTitle(getText(R.string.add_device_admin_msg)); } mActionButton.setText(getText(R.string.add_device_admin)); if (isAdminUninstallable()) { mUninstallButton.setVisibility(View.VISIBLE); } mSupportMessage.setVisibility(View.GONE); mAdding = true; } Loading Loading @@ -564,4 +595,18 @@ public class DeviceAdminAdd extends Activity { UserHandle.getUserId(adminInfo.getActivityInfo().applicationInfo.uid)); return info != null ? info.isManagedProfile() : false; } private boolean isAdminUninstallable() { // System apps can't be uninstalled. return !mDeviceAdmin.getActivityInfo().applicationInfo.isSystemApp(); } private void uninstall() { final Uri packageURI = Uri.parse("package:" + mDeviceAdmin.getPackageName()); final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI); uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false); uninstallIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true); startActivityForResult(uninstallIntent, REQUEST_CODE_UNINSTALL); } }
src/com/android/settings/EventLogTags.logtags +3 −0 Original line number Diff line number Diff line Loading @@ -10,3 +10,6 @@ option java_package com.android.settings # log whether user declined activation of device admin 90202 exp_det_device_admin_declined_by_user (app_signature|3) # log whether user uninstalled device admin on activation screen 90203 exp_det_device_admin_uninstalled_by_user (app_signature|3)