Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 563b56af authored by Michael Wachenschwanz's avatar Michael Wachenschwanz Committed by Android (Google) Code Review
Browse files

Merge "Simplify user flow for setting default supervisor as PO" into qt-dev

parents 91acd50e 35eef604
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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"
+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>
+5 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
+60 −16
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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);
@@ -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);
@@ -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);
+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);
    }
}