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

Commit 35027404 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Only allow admin users to adopt sd card as internal storage.

Bug: 21883016
Change-Id: I11ca324ab74ce2a8bf13064b4c7735aea132c562
parent 21e00f98
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserManager;
import android.os.storage.DiskInfo;
import android.os.storage.StorageEventListener;
import android.os.storage.StorageManager;
@@ -64,6 +65,8 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
    private Preference mFormatPublic;
    private Preference mFormatPrivate;

    private boolean mIsPermittedToAdopt;

    private boolean isVolumeValid() {
        return (mVolume != null) && (mVolume.getType() == VolumeInfo.TYPE_PUBLIC)
                && mVolume.isMountedReadable();
@@ -80,6 +83,8 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {

        final Context context = getActivity();

        mIsPermittedToAdopt = UserManager.get(context).isAdminUser();

        mStorageManager = context.getSystemService(StorageManager.class);

        if (DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS.equals(
@@ -109,8 +114,10 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
        mMount = buildAction(R.string.storage_menu_mount);
        mUnmount = buildAction(R.string.storage_menu_unmount);
        mFormatPublic = buildAction(R.string.storage_menu_format);
        if (mIsPermittedToAdopt) {
            mFormatPrivate = buildAction(R.string.storage_menu_format_private);
        }
    }

    public void update() {
        if (!isVolumeValid()) {
@@ -148,7 +155,7 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment {
            screen.addPreference(mUnmount);
        }
        screen.addPreference(mFormatPublic);
        if (mDisk.isAdoptable()) {
        if (mDisk.isAdoptable() && mIsPermittedToAdopt) {
            screen.addPreference(mFormatPrivate);
        }
    }
+11 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.deviceinfo;

import android.content.Intent;
import android.os.Bundle;
import android.os.UserManager;
import android.os.storage.DiskInfo;
import android.os.storage.VolumeInfo;
import android.widget.CompoundButton;
@@ -30,6 +31,8 @@ public class StorageWizardInit extends StorageWizardBase {
    private RadioButton mRadioExternal;
    private RadioButton mRadioInternal;

    private boolean mIsPermittedToAdopt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -39,6 +42,8 @@ public class StorageWizardInit extends StorageWizardBase {
        }
        setContentView(R.layout.storage_wizard_init);

        mIsPermittedToAdopt = UserManager.get(this).isAdminUser();

        setIllustrationInternal(true);
        setHeaderText(R.string.storage_wizard_init_title, mDisk.getDescription());

@@ -63,6 +68,12 @@ public class StorageWizardInit extends StorageWizardBase {
            onNavigateNext();
            finish();
        }

        // TODO: Show a message about why this is disabled for guest and that only an admin user
        // can adopt an sd card.
        if (!mIsPermittedToAdopt) {
            mRadioInternal.setEnabled(false);
        }
    }

    private final OnCheckedChangeListener mRadioListener = new OnCheckedChangeListener() {