Merge "Erase SD Card fixed in Settings/Storage." into honeycomb-mr2
This commit is contained in:
committed by
Android (Google) Code Review
commit
5387276950
@@ -19,6 +19,7 @@ package com.android.settings;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.storage.StorageVolume;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
@@ -57,6 +58,10 @@ public class MediaFormat extends Activity {
|
|||||||
}
|
}
|
||||||
Intent intent = new Intent(ExternalStorageFormatter.FORMAT_ONLY);
|
Intent intent = new Intent(ExternalStorageFormatter.FORMAT_ONLY);
|
||||||
intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
|
intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
|
||||||
|
// Transfer the storage volume to the new intent
|
||||||
|
final StorageVolume storageVolume = getIntent().getParcelableExtra(
|
||||||
|
StorageVolume.EXTRA_STORAGE_VOLUME);
|
||||||
|
intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, storageVolume);
|
||||||
startService(intent);
|
startService(intent);
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,6 @@ import android.content.res.Resources;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Parcelable;
|
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
import android.os.storage.IMountService;
|
import android.os.storage.IMountService;
|
||||||
@@ -76,24 +75,18 @@ public class Memory extends SettingsPreferenceFragment implements OnCancelListen
|
|||||||
|
|
||||||
mResources = getResources();
|
mResources = getResources();
|
||||||
|
|
||||||
try {
|
StorageVolume[] storageVolumes = mStorageManager.getVolumeList();
|
||||||
IMountService mountService = IMountService.Stub.asInterface(ServiceManager
|
int length = storageVolumes.length;
|
||||||
.getService("mount"));
|
|
||||||
Parcelable[] volumes = mountService.getVolumeList();
|
|
||||||
int length = volumes.length;
|
|
||||||
mStorageVolumePreferenceCategories = new StorageVolumePreferenceCategory[length];
|
mStorageVolumePreferenceCategories = new StorageVolumePreferenceCategory[length];
|
||||||
for (int i = 0; i < length; i++) {
|
for (int i = 0; i < length; i++) {
|
||||||
StorageVolume storageVolume = (StorageVolume) volumes[i];
|
StorageVolume storageVolume = storageVolumes[i];
|
||||||
StorageVolumePreferenceCategory storagePreferenceCategory =
|
StorageVolumePreferenceCategory storagePreferenceCategory =
|
||||||
new StorageVolumePreferenceCategory(getActivity(), mResources, storageVolume,
|
new StorageVolumePreferenceCategory(getActivity(), mResources, storageVolume,
|
||||||
i == 0); // The first volume is the primary volume
|
mStorageManager, i == 0); // The first volume is the primary volume
|
||||||
mStorageVolumePreferenceCategories[i] = storagePreferenceCategory;
|
mStorageVolumePreferenceCategories[i] = storagePreferenceCategory;
|
||||||
getPreferenceScreen().addPreference(storagePreferenceCategory);
|
getPreferenceScreen().addPreference(storagePreferenceCategory);
|
||||||
storagePreferenceCategory.init();
|
storagePreferenceCategory.init();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
Log.e(TAG, "couldn't talk to MountService", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -117,7 +110,7 @@ public class Memory extends SettingsPreferenceFragment implements OnCancelListen
|
|||||||
" to " + newState);
|
" to " + newState);
|
||||||
for (int i = 0; i < mStorageVolumePreferenceCategories.length; i++) {
|
for (int i = 0; i < mStorageVolumePreferenceCategories.length; i++) {
|
||||||
StorageVolumePreferenceCategory svpc = mStorageVolumePreferenceCategories[i];
|
StorageVolumePreferenceCategory svpc = mStorageVolumePreferenceCategories[i];
|
||||||
if (path.equals(svpc.getMountPoint())) {
|
if (path.equals(svpc.getStorageVolume().getPath())) {
|
||||||
svpc.onStorageStateChanged();
|
svpc.onStorageStateChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -167,10 +160,11 @@ public class Memory extends SettingsPreferenceFragment implements OnCancelListen
|
|||||||
boolean mountToggleClicked = svpc.mountToggleClicked(preference);
|
boolean mountToggleClicked = svpc.mountToggleClicked(preference);
|
||||||
if (mountToggleClicked && mClickedMountToggle == null) {
|
if (mountToggleClicked && mClickedMountToggle == null) {
|
||||||
mClickedMountToggle = preference;
|
mClickedMountToggle = preference;
|
||||||
mClickedMountPoint = svpc.getMountPoint();
|
final StorageVolume storageVolume = svpc.getStorageVolume();
|
||||||
String state = svpc.getStorageVolumeState();
|
mClickedMountPoint = storageVolume.getPath();
|
||||||
if (state.equals(Environment.MEDIA_MOUNTED) ||
|
String state = mStorageManager.getVolumeState(storageVolume.getPath());
|
||||||
state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
|
if (Environment.MEDIA_MOUNTED.equals(state) ||
|
||||||
|
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
|
||||||
unmount();
|
unmount();
|
||||||
} else {
|
} else {
|
||||||
mount();
|
mount();
|
||||||
|
@@ -191,11 +191,11 @@ public class MiscFilesHandler extends ListActivity {
|
|||||||
|
|
||||||
public MemoryMearurementAdapter(Activity activity) {
|
public MemoryMearurementAdapter(Activity activity) {
|
||||||
mContext = activity;
|
mContext = activity;
|
||||||
final Bundle extras = activity.getIntent().getExtras();
|
final StorageVolume storageVolume = activity.getIntent().getParcelableExtra(
|
||||||
final StorageVolume storageVolume = extras.getParcelable(
|
StorageVolume.EXTRA_STORAGE_VOLUME);
|
||||||
StorageVolumePreferenceCategory.STORAGE_VOLUME);
|
|
||||||
StorageMeasurement mMeasurement =
|
StorageMeasurement mMeasurement =
|
||||||
StorageMeasurement.getInstance(activity, storageVolume, false);
|
StorageMeasurement.getInstance(activity, storageVolume, false /*Unused as a key*/);
|
||||||
|
if (mMeasurement == null) return;
|
||||||
mData = (ArrayList<StorageMeasurement.FileInfo>) mMeasurement.mFileInfoForMisc;
|
mData = (ArrayList<StorageMeasurement.FileInfo>) mMeasurement.mFileInfoForMisc;
|
||||||
if (mData != null) {
|
if (mData != null) {
|
||||||
for (StorageMeasurement.FileInfo info : mData) {
|
for (StorageMeasurement.FileInfo info : mData) {
|
||||||
|
@@ -26,8 +26,7 @@ import android.os.Bundle;
|
|||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.ServiceManager;
|
import android.os.storage.StorageManager;
|
||||||
import android.os.storage.IMountService;
|
|
||||||
import android.os.storage.StorageVolume;
|
import android.os.storage.StorageVolume;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
@@ -60,6 +59,8 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
|
|
||||||
private StorageVolume mStorageVolume;
|
private StorageVolume mStorageVolume;
|
||||||
|
|
||||||
|
private StorageManager mStorageManager = null;
|
||||||
|
|
||||||
private StorageMeasurement mMeasurement;
|
private StorageMeasurement mMeasurement;
|
||||||
|
|
||||||
static class CategoryInfo {
|
static class CategoryInfo {
|
||||||
@@ -126,9 +127,6 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
// Updates the memory usage bar graph.
|
// Updates the memory usage bar graph.
|
||||||
private static final int MSG_UI_UPDATE_EXACT = 2;
|
private static final int MSG_UI_UPDATE_EXACT = 2;
|
||||||
|
|
||||||
// Key for the extra StorageVolume bundle added to the Misc intent.
|
|
||||||
static final String STORAGE_VOLUME = "storage_volume";
|
|
||||||
|
|
||||||
private Handler mUpdateHandler = new Handler() {
|
private Handler mUpdateHandler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
@@ -157,10 +155,11 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
};
|
};
|
||||||
|
|
||||||
public StorageVolumePreferenceCategory(Context context, Resources resources,
|
public StorageVolumePreferenceCategory(Context context, Resources resources,
|
||||||
StorageVolume storageVolume, boolean isPrimary) {
|
StorageVolume storageVolume, StorageManager storageManager, boolean isPrimary) {
|
||||||
super(context);
|
super(context);
|
||||||
mResources = resources;
|
mResources = resources;
|
||||||
mStorageVolume = storageVolume;
|
mStorageVolume = storageVolume;
|
||||||
|
mStorageManager = storageManager;
|
||||||
setTitle(storageVolume.getDescription());
|
setTitle(storageVolume.getDescription());
|
||||||
mMeasurement = StorageMeasurement.getInstance(context, storageVolume, isPrimary);
|
mMeasurement = StorageMeasurement.getInstance(context, storageVolume, isPrimary);
|
||||||
mMeasurement.setReceiver(this);
|
mMeasurement.setReceiver(this);
|
||||||
@@ -196,18 +195,8 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
mFormatPreference.setSummary(R.string.sd_format_summary);
|
mFormatPreference.setSummary(R.string.sd_format_summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMountPoint() {
|
public StorageVolume getStorageVolume() {
|
||||||
return mStorageVolume.getPath();
|
return mStorageVolume;
|
||||||
}
|
|
||||||
|
|
||||||
public String getStorageVolumeState() {
|
|
||||||
try {
|
|
||||||
IMountService mountService =
|
|
||||||
IMountService.Stub.asInterface(ServiceManager.getService("mount"));
|
|
||||||
return mountService.getVolumeState(getMountPoint());
|
|
||||||
} catch (Exception rex) {
|
|
||||||
return Environment.MEDIA_REMOVED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -237,10 +226,10 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
private void updatePreferencesFromState() {
|
private void updatePreferencesFromState() {
|
||||||
resetPreferences();
|
resetPreferences();
|
||||||
|
|
||||||
String state = getStorageVolumeState();
|
String state = mStorageManager.getVolumeState(mStorageVolume.getPath());
|
||||||
|
|
||||||
String readOnly = "";
|
String readOnly = "";
|
||||||
if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
|
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
|
||||||
state = Environment.MEDIA_MOUNTED;
|
state = Environment.MEDIA_MOUNTED;
|
||||||
readOnly = mResources.getString(R.string.read_only);
|
readOnly = mResources.getString(R.string.read_only);
|
||||||
removePreference(mFormatPreference);
|
removePreference(mFormatPreference);
|
||||||
@@ -250,21 +239,21 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
removePreference(mFormatPreference);
|
removePreference(mFormatPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mStorageVolume.isRemovable() && !state.equals(Environment.MEDIA_UNMOUNTED)) {
|
if (!mStorageVolume.isRemovable() && !Environment.MEDIA_UNMOUNTED.equals(state)) {
|
||||||
// This device has built-in storage that is not removable.
|
// This device has built-in storage that is not removable.
|
||||||
// There is no reason for the user to unmount it.
|
// There is no reason for the user to unmount it.
|
||||||
removePreference(mMountTogglePreference);
|
removePreference(mMountTogglePreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.equals(Environment.MEDIA_MOUNTED)) {
|
if (Environment.MEDIA_MOUNTED.equals(state)) {
|
||||||
mPreferences[AVAILABLE].setSummary(mPreferences[AVAILABLE].getSummary() + readOnly);
|
mPreferences[AVAILABLE].setSummary(mPreferences[AVAILABLE].getSummary() + readOnly);
|
||||||
|
|
||||||
mMountTogglePreference.setEnabled(true);
|
mMountTogglePreference.setEnabled(true);
|
||||||
mMountTogglePreference.setTitle(mResources.getString(R.string.sd_eject));
|
mMountTogglePreference.setTitle(mResources.getString(R.string.sd_eject));
|
||||||
mMountTogglePreference.setSummary(mResources.getString(R.string.sd_eject_summary));
|
mMountTogglePreference.setSummary(mResources.getString(R.string.sd_eject_summary));
|
||||||
} else {
|
} else {
|
||||||
if (state.equals(Environment.MEDIA_UNMOUNTED) || state.equals(Environment.MEDIA_NOFS)
|
if (Environment.MEDIA_UNMOUNTED.equals(state) || Environment.MEDIA_NOFS.equals(state)
|
||||||
|| state.equals(Environment.MEDIA_UNMOUNTABLE)) {
|
|| Environment.MEDIA_UNMOUNTABLE.equals(state)) {
|
||||||
mMountTogglePreference.setEnabled(true);
|
mMountTogglePreference.setEnabled(true);
|
||||||
mMountTogglePreference.setTitle(mResources.getString(R.string.sd_mount));
|
mMountTogglePreference.setTitle(mResources.getString(R.string.sd_mount));
|
||||||
mMountTogglePreference.setSummary(mResources.getString(R.string.sd_mount_summary));
|
mMountTogglePreference.setSummary(mResources.getString(R.string.sd_mount_summary));
|
||||||
@@ -391,6 +380,7 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
if (preference == mFormatPreference) {
|
if (preference == mFormatPreference) {
|
||||||
intent = new Intent(Intent.ACTION_VIEW);
|
intent = new Intent(Intent.ACTION_VIEW);
|
||||||
intent.setClass(getContext(), com.android.settings.MediaFormat.class);
|
intent.setClass(getContext(), com.android.settings.MediaFormat.class);
|
||||||
|
intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, mStorageVolume);
|
||||||
} else if (preference == mPreferences[APPLICATIONS]) {
|
} else if (preference == mPreferences[APPLICATIONS]) {
|
||||||
intent = new Intent(Intent.ACTION_MANAGE_PACKAGE_STORAGE);
|
intent = new Intent(Intent.ACTION_MANAGE_PACKAGE_STORAGE);
|
||||||
intent.setClass(getContext(),
|
intent.setClass(getContext(),
|
||||||
@@ -408,7 +398,7 @@ public class StorageVolumePreferenceCategory extends PreferenceCategory implemen
|
|||||||
Context context = getContext().getApplicationContext();
|
Context context = getContext().getApplicationContext();
|
||||||
if (mMeasurement.getMiscSize() > 0) {
|
if (mMeasurement.getMiscSize() > 0) {
|
||||||
intent = new Intent(context, MiscFilesHandler.class);
|
intent = new Intent(context, MiscFilesHandler.class);
|
||||||
intent.putExtra(STORAGE_VOLUME, mStorageVolume);
|
intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, mStorageVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user