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

Commit fee4e3e4 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Update ShowAdminSupportDetailsDialog launchmode to singleTop.

Bug: 26977320
Change-Id: I8d89ba9243c807657fb4b2b8c93e75aab53d907e
parent 7f2a0136
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -2760,8 +2760,8 @@


        <activity android:name="ShowAdminSupportDetailsDialog"
        <activity android:name="ShowAdminSupportDetailsDialog"
                android:theme="@style/Transparent"
                android:theme="@style/Transparent"
                android:excludeFromRecents="true">
                android:excludeFromRecents="true"

                android:launchMode="singleTop">
            <intent-filter>
            <intent-filter>
                <action android:name="android.settings.SHOW_ADMIN_SUPPORT_DETAILS" />
                <action android:name="android.settings.SHOW_ADMIN_SUPPORT_DETAILS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.DEFAULT" />
+33 −14
Original line number Original line Diff line number Diff line
@@ -37,40 +37,59 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TextView;


import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

public class ShowAdminSupportDetailsDialog extends Activity
public class ShowAdminSupportDetailsDialog extends Activity
        implements DialogInterface.OnDismissListener {
        implements DialogInterface.OnDismissListener {


    private final String TAG = "AdminSupportDialog";
    private static final String TAG = "AdminSupportDialog";


    private DevicePolicyManager mDpm;
    private DevicePolicyManager mDpm;


    private EnforcedAdmin mEnforcedAdmin;
    private View mDialogView;

    @Override
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);


        mDpm = getSystemService(DevicePolicyManager.class);
        mDpm = getSystemService(DevicePolicyManager.class);
        ComponentName admin = null;
        mEnforcedAdmin = getAdminDetailsFromIntent(getIntent());
        int userId = UserHandle.myUserId();
        Intent intent = getIntent();
        if (intent != null) {
            // Only allow apps with MANAGE_DEVICE_ADMINS permission to specify admin and user.
            if (checkIfCallerHasPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS)) {
                admin = intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN);
                userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
            }
        }


        View rootView = LayoutInflater.from(this).inflate(
        mDialogView = LayoutInflater.from(this).inflate(
                R.layout.admin_support_details_dialog, null);
                R.layout.admin_support_details_dialog, null);
        setAdminSupportDetails(rootView, admin, userId);
        setAdminSupportDetails(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId);


        new AlertDialog.Builder(this)
        new AlertDialog.Builder(this)
                .setView(rootView)
                .setView(mDialogView)
                .setPositiveButton(R.string.okay, null)
                .setPositiveButton(R.string.okay, null)
                .setOnDismissListener(this)
                .setOnDismissListener(this)
                .show();
                .show();
    }
    }


    @Override
    public void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        EnforcedAdmin admin = getAdminDetailsFromIntent(intent);
        if (!mEnforcedAdmin.equals(admin)) {
            mEnforcedAdmin = admin;
            setAdminSupportDetails(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId);
        }
    }

    private EnforcedAdmin getAdminDetailsFromIntent(Intent intent) {
        EnforcedAdmin admin = new EnforcedAdmin(null, UserHandle.myUserId());
        if (intent == null) {
            return admin;
        }
        // Only allow apps with MANAGE_DEVICE_ADMINS permission to specify admin and user.
        if (checkIfCallerHasPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS)) {
            admin.component = intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN);
            admin.userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId());
        }
        return admin;
    }

    private boolean checkIfCallerHasPermission(String permission) {
    private boolean checkIfCallerHasPermission(String permission) {
        IActivityManager am = ActivityManagerNative.getDefault();
        IActivityManager am = ActivityManagerNative.getDefault();
        try {
        try {