Loading AndroidManifest.xml +7 −6 Original line number Diff line number Diff line Loading @@ -1341,14 +1341,15 @@ </intent-filter> </activity> <activity-alias android:name="SetProfileOwner" android:label="@string/profile_owner_add_title" android:targetActivity=".applications.specialaccess.deviceadmin.DeviceAdminAdd"> <activity android:name=".applications.specialaccess.deviceadmin.ProfileOwnerAdd" android:excludeFromRecents="true" android:theme="@style/Transparent" android:clearTaskOnLaunch="true"> <intent-filter android:priority="1000"> <action android:name="android.app.action.SET_PROFILE_OWNER" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity-alias> </activity> <activity android:name="Settings$UsageAccessSettingsActivity" Loading res/layout/profile_owner_add.xml 0 → 100644 +38 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2019 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/active_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/add_msg_simplified" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbars = "vertical" android:padding="?dialogPreferredPadding" android:gravity="center_vertical"/> <TextView android:id="@+id/admin_warning_simplified" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="?dialogPreferredPadding" android:paddingEnd="?dialogPreferredPadding"/> </LinearLayout> res/values/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -6023,6 +6023,9 @@ <string name="device_admin_warning">Activating this admin app will allow the app <xliff:g id="app_name">%1$s</xliff:g> to perform the following operations:</string> <!-- Simplified device admin warning message [CHAR LIMIT=NONE]--> <string name="device_admin_warning_simplified">This device will be managed and monitored by <xliff:g id="app_name" example="Example Supervisor">%1$s</xliff:g>.</string> <!-- Device admin warning message about policies an admin can use --> <string name="device_admin_status">This admin app is active and allows the app <xliff:g id="app_name">%1$s</xliff:g> to perform the Loading @@ -6030,6 +6033,8 @@ <!-- Title for screen to set a profile owner [CHAR LIMIT=40] --> <string name="profile_owner_add_title">Activate Profile Manager?</string> <!-- Simplified title for dialog to set a profile owner [CHAR LIMIT=40] --> <string name="profile_owner_add_title_simplified">Allow supervision?</string> <!-- Warning when trying to add a profile owner admin after setup has completed. [CHAR LIMIT=none] --> <string name="adding_profile_owner_warning">By proceeding, your user will be managed by your admin which may also be able to store associated data, in addition to your personal Loading src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +60 −16 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.text.TextUtils.TruncateAt; import android.text.method.ScrollingMovementMethod; import android.util.EventLog; import android.util.Log; import android.view.Display; Loading Loading @@ -273,15 +274,63 @@ public class DeviceAdminAdd extends Activity { } } mAddMsgText = getIntent().getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION); if (mAddingProfileOwner) { // If we're trying to add a profile owner and user setup hasn't completed yet, no // need to prompt for permission. Just add and finish. if (mAddingProfileOwner && !mDPM.hasUserSetupCompleted()) { // need to prompt for permission. Just add and finish if (!mDPM.hasUserSetupCompleted()) { addAndFinish(); return; } mAddMsgText = getIntent().getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION); // othewise, only the defined default supervision profile owner can be set after user // setup. final String supervisor = getString( com.android.internal.R.string.config_defaultSupervisionProfileOwnerComponent); if (supervisor == null) { Log.w(TAG, "Unable to set profile owner post-setup, no default supervisor" + "profile owner defined"); finish(); return; } final ComponentName supervisorComponent = ComponentName.unflattenFromString( supervisor); if (who.compareTo(supervisorComponent) != 0) { Log.w(TAG, "Unable to set non-default profile owner post-setup " + who); finish(); return; } // Build and show the simplified dialog final Dialog dialog = new AlertDialog.Builder(this) .setTitle(getText(R.string.profile_owner_add_title_simplified)) .setView(R.layout.profile_owner_add) .setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { addAndFinish(); } }) .setNeutralButton(R.string.cancel, null) .setOnDismissListener(new DialogInterface.OnDismissListener() { public void onDismiss(DialogInterface dialogInterface) { finish(); } }) .create(); dialog.show(); mActionButton = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE); mActionButton.setFilterTouchesWhenObscured(true); mAddMsg = dialog.findViewById(R.id.add_msg_simplified); mAddMsg.setMovementMethod(new ScrollingMovementMethod()); mAddMsg.setText(mAddMsgText); mAdminWarning = dialog.findViewById(R.id.admin_warning_simplified); mAdminWarning.setText(getString(R.string.device_admin_warning_simplified, mProfileOwnerName)); return; } setContentView(R.layout.device_admin_add); mAdminIcon = (ImageView)findViewById(R.id.admin_icon); Loading Loading @@ -501,7 +550,9 @@ public class DeviceAdminAdd extends Activity { protected void onResume() { super.onResume(); mActionButton.setEnabled(true); if (!mAddingProfileOwner) { updateInterface(); } // As long as we are running, don't let anyone overlay stuff on top of the screen. mAppOps.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, true, mToken); mAppOps.setUserRestriction(AppOpsManager.OP_TOAST_WINDOW, true, mToken); Loading Loading @@ -571,9 +622,6 @@ public class DeviceAdminAdd extends Activity { } catch (Resources.NotFoundException e) { mAdminDescription.setVisibility(View.GONE); } if (mAddingProfileOwner) { mProfileOwnerWarning.setVisibility(View.VISIBLE); } if (mAddMsgText != null) { mAddMsg.setText(mAddMsgText); mAddMsg.setVisibility(View.VISIBLE); Loading Loading @@ -634,11 +682,7 @@ public class DeviceAdminAdd extends Activity { addDeviceAdminPolicies(true /* showDescription */); mAdminWarning.setText(getString(R.string.device_admin_warning, mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager()))); if (mAddingProfileOwner) { setTitle(getText(R.string.profile_owner_add_title)); } else { setTitle(getText(R.string.add_device_admin_msg)); } mActionButton.setText(getText(R.string.add_device_admin)); if (isAdminUninstallable()) { mUninstallButton.setVisibility(View.VISIBLE); Loading src/com/android/settings/applications/specialaccess/deviceadmin/ProfileOwnerAdd.java 0 → 100644 +31 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.settings.applications.specialaccess.deviceadmin; import android.os.Bundle; /** * ProfileOwnerAdd uses the DeviceAdminAdd logic to handle SET_PROFILE_OWNER intents * * TODO(b/131713071): Move profile owner add logic from DeviceAdminAdd to here */ public class ProfileOwnerAdd extends DeviceAdminAdd { @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); } } Loading
AndroidManifest.xml +7 −6 Original line number Diff line number Diff line Loading @@ -1341,14 +1341,15 @@ </intent-filter> </activity> <activity-alias android:name="SetProfileOwner" android:label="@string/profile_owner_add_title" android:targetActivity=".applications.specialaccess.deviceadmin.DeviceAdminAdd"> <activity android:name=".applications.specialaccess.deviceadmin.ProfileOwnerAdd" android:excludeFromRecents="true" android:theme="@style/Transparent" android:clearTaskOnLaunch="true"> <intent-filter android:priority="1000"> <action android:name="android.app.action.SET_PROFILE_OWNER" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity-alias> </activity> <activity android:name="Settings$UsageAccessSettingsActivity" Loading
res/layout/profile_owner_add.xml 0 → 100644 +38 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2019 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/active_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/add_msg_simplified" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbars = "vertical" android:padding="?dialogPreferredPadding" android:gravity="center_vertical"/> <TextView android:id="@+id/admin_warning_simplified" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="?dialogPreferredPadding" android:paddingEnd="?dialogPreferredPadding"/> </LinearLayout>
res/values/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -6023,6 +6023,9 @@ <string name="device_admin_warning">Activating this admin app will allow the app <xliff:g id="app_name">%1$s</xliff:g> to perform the following operations:</string> <!-- Simplified device admin warning message [CHAR LIMIT=NONE]--> <string name="device_admin_warning_simplified">This device will be managed and monitored by <xliff:g id="app_name" example="Example Supervisor">%1$s</xliff:g>.</string> <!-- Device admin warning message about policies an admin can use --> <string name="device_admin_status">This admin app is active and allows the app <xliff:g id="app_name">%1$s</xliff:g> to perform the Loading @@ -6030,6 +6033,8 @@ <!-- Title for screen to set a profile owner [CHAR LIMIT=40] --> <string name="profile_owner_add_title">Activate Profile Manager?</string> <!-- Simplified title for dialog to set a profile owner [CHAR LIMIT=40] --> <string name="profile_owner_add_title_simplified">Allow supervision?</string> <!-- Warning when trying to add a profile owner admin after setup has completed. [CHAR LIMIT=none] --> <string name="adding_profile_owner_warning">By proceeding, your user will be managed by your admin which may also be able to store associated data, in addition to your personal Loading
src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +60 −16 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.text.TextUtils.TruncateAt; import android.text.method.ScrollingMovementMethod; import android.util.EventLog; import android.util.Log; import android.view.Display; Loading Loading @@ -273,15 +274,63 @@ public class DeviceAdminAdd extends Activity { } } mAddMsgText = getIntent().getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION); if (mAddingProfileOwner) { // If we're trying to add a profile owner and user setup hasn't completed yet, no // need to prompt for permission. Just add and finish. if (mAddingProfileOwner && !mDPM.hasUserSetupCompleted()) { // need to prompt for permission. Just add and finish if (!mDPM.hasUserSetupCompleted()) { addAndFinish(); return; } mAddMsgText = getIntent().getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION); // othewise, only the defined default supervision profile owner can be set after user // setup. final String supervisor = getString( com.android.internal.R.string.config_defaultSupervisionProfileOwnerComponent); if (supervisor == null) { Log.w(TAG, "Unable to set profile owner post-setup, no default supervisor" + "profile owner defined"); finish(); return; } final ComponentName supervisorComponent = ComponentName.unflattenFromString( supervisor); if (who.compareTo(supervisorComponent) != 0) { Log.w(TAG, "Unable to set non-default profile owner post-setup " + who); finish(); return; } // Build and show the simplified dialog final Dialog dialog = new AlertDialog.Builder(this) .setTitle(getText(R.string.profile_owner_add_title_simplified)) .setView(R.layout.profile_owner_add) .setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { addAndFinish(); } }) .setNeutralButton(R.string.cancel, null) .setOnDismissListener(new DialogInterface.OnDismissListener() { public void onDismiss(DialogInterface dialogInterface) { finish(); } }) .create(); dialog.show(); mActionButton = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE); mActionButton.setFilterTouchesWhenObscured(true); mAddMsg = dialog.findViewById(R.id.add_msg_simplified); mAddMsg.setMovementMethod(new ScrollingMovementMethod()); mAddMsg.setText(mAddMsgText); mAdminWarning = dialog.findViewById(R.id.admin_warning_simplified); mAdminWarning.setText(getString(R.string.device_admin_warning_simplified, mProfileOwnerName)); return; } setContentView(R.layout.device_admin_add); mAdminIcon = (ImageView)findViewById(R.id.admin_icon); Loading Loading @@ -501,7 +550,9 @@ public class DeviceAdminAdd extends Activity { protected void onResume() { super.onResume(); mActionButton.setEnabled(true); if (!mAddingProfileOwner) { updateInterface(); } // As long as we are running, don't let anyone overlay stuff on top of the screen. mAppOps.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, true, mToken); mAppOps.setUserRestriction(AppOpsManager.OP_TOAST_WINDOW, true, mToken); Loading Loading @@ -571,9 +622,6 @@ public class DeviceAdminAdd extends Activity { } catch (Resources.NotFoundException e) { mAdminDescription.setVisibility(View.GONE); } if (mAddingProfileOwner) { mProfileOwnerWarning.setVisibility(View.VISIBLE); } if (mAddMsgText != null) { mAddMsg.setText(mAddMsgText); mAddMsg.setVisibility(View.VISIBLE); Loading Loading @@ -634,11 +682,7 @@ public class DeviceAdminAdd extends Activity { addDeviceAdminPolicies(true /* showDescription */); mAdminWarning.setText(getString(R.string.device_admin_warning, mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager()))); if (mAddingProfileOwner) { setTitle(getText(R.string.profile_owner_add_title)); } else { setTitle(getText(R.string.add_device_admin_msg)); } mActionButton.setText(getText(R.string.add_device_admin)); if (isAdminUninstallable()) { mUninstallButton.setVisibility(View.VISIBLE); Loading
src/com/android/settings/applications/specialaccess/deviceadmin/ProfileOwnerAdd.java 0 → 100644 +31 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.settings.applications.specialaccess.deviceadmin; import android.os.Bundle; /** * ProfileOwnerAdd uses the DeviceAdminAdd logic to handle SET_PROFILE_OWNER intents * * TODO(b/131713071): Move profile owner add logic from DeviceAdminAdd to here */ public class ProfileOwnerAdd extends DeviceAdminAdd { @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); } }