diff options
Diffstat (limited to 'services/java/com/android/server/status/UsbStorageActivity.java')
-rw-r--r-- | services/java/com/android/server/status/UsbStorageActivity.java | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/services/java/com/android/server/status/UsbStorageActivity.java b/services/java/com/android/server/status/UsbStorageActivity.java deleted file mode 100644 index e8631c5..0000000 --- a/services/java/com/android/server/status/UsbStorageActivity.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (C) 2007 Google Inc. - * - * 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.server.status; - -import com.android.internal.R; -import android.app.Activity; -import android.app.ActivityManager; -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.DialogInterface.OnCancelListener; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import android.os.IBinder; -import android.os.storage.IMountService; -import android.os.storage.StorageManager; -import android.os.storage.StorageEventListener; -import android.os.RemoteException; -import android.os.ServiceManager; -import android.widget.ImageView; -import android.widget.Button; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.view.View; -import android.view.Window; -import android.util.Log; - -import java.util.List; - -/** - * This activity is shown to the user for him/her to enable USB mass storage - * on-demand (that is, when the USB cable is connected). It uses the alert - * dialog style. It will be launched from a notification. - */ -public class UsbStorageActivity extends Activity - implements View.OnClickListener, OnCancelListener { - private static final String TAG = "UsbStorageActivity"; - - private Button mMountButton; - private Button mUnmountButton; - private ProgressBar mProgressBar; - private TextView mBanner; - private TextView mMessage; - private ImageView mIcon; - private StorageManager mStorageManager = null; - private static final int DLG_CONFIRM_KILL_STORAGE_USERS = 1; - private static final int DLG_ERROR_SHARING = 2; - static final boolean localLOGV = false; - - /** Used to detect when the USB cable is unplugged, so we can call finish() */ - private BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction() == Intent.ACTION_BATTERY_CHANGED) { - handleBatteryChanged(intent); - } - } - }; - - private StorageEventListener mStorageListener = new StorageEventListener() { - @Override - public void onStorageStateChanged(String path, String oldState, String newState) { - final boolean on = newState.equals(Environment.MEDIA_SHARED); - switchDisplay(on); - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (mStorageManager == null) { - mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE); - if (mStorageManager == null) { - Log.w(TAG, "Failed to get StorageManager"); - } - } - - requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); - setProgressBarIndeterminateVisibility(true); - - setTitle(getString(com.android.internal.R.string.usb_storage_activity_title)); - - setContentView(com.android.internal.R.layout.usb_storage_activity); - - mIcon = (ImageView) findViewById(com.android.internal.R.id.icon); - mBanner = (TextView) findViewById(com.android.internal.R.id.banner); - mMessage = (TextView) findViewById(com.android.internal.R.id.message); - - mMountButton = (Button) findViewById(com.android.internal.R.id.mount_button); - mMountButton.setOnClickListener(this); - mUnmountButton = (Button) findViewById(com.android.internal.R.id.unmount_button); - mUnmountButton.setOnClickListener(this); - mProgressBar = (ProgressBar) findViewById(com.android.internal.R.id.progress); - } - - private void switchDisplay(boolean usbStorageInUse) { - if (usbStorageInUse) { - mProgressBar.setVisibility(View.GONE); - mUnmountButton.setVisibility(View.VISIBLE); - mMountButton.setVisibility(View.GONE); - mIcon.setImageResource(com.android.internal.R.drawable.usb_android_connected); - mBanner.setText(com.android.internal.R.string.usb_storage_stop_title); - mMessage.setText(com.android.internal.R.string.usb_storage_stop_message); - } else { - mProgressBar.setVisibility(View.GONE); - mUnmountButton.setVisibility(View.GONE); - mMountButton.setVisibility(View.VISIBLE); - mIcon.setImageResource(com.android.internal.R.drawable.usb_android); - mBanner.setText(com.android.internal.R.string.usb_storage_title); - mMessage.setText(com.android.internal.R.string.usb_storage_message); - } - } - - @Override - protected void onResume() { - super.onResume(); - - mStorageManager.registerListener(mStorageListener); - registerReceiver(mBatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - try { - switchDisplay(mStorageManager.isUsbMassStorageEnabled()); - } catch (Exception ex) { - Log.e(TAG, "Failed to read UMS enable state", ex); - } - } - - @Override - protected void onPause() { - super.onPause(); - - unregisterReceiver(mBatteryReceiver); - if (mStorageManager == null && mStorageListener != null) { - mStorageManager.unregisterListener(mStorageListener); - } - } - - private void handleBatteryChanged(Intent intent) { - int pluggedType = intent.getIntExtra("plugged", 0); - if (pluggedType == 0) { - // It was disconnected from the plug, so finish - finish(); - } - } - - private IMountService getMountService() { - IBinder service = ServiceManager.getService("mount"); - if (service != null) { - return IMountService.Stub.asInterface(service); - } - return null; - } - - @Override - public Dialog onCreateDialog(int id, Bundle args) { - switch (id) { - case DLG_CONFIRM_KILL_STORAGE_USERS: - return new AlertDialog.Builder(this) - .setTitle(R.string.dlg_confirm_kill_storage_users_title) - .setPositiveButton(R.string.dlg_ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - switchUsbMassStorageAsync(true); - }}) - .setNegativeButton(R.string.cancel, null) - .setMessage(R.string.dlg_confirm_kill_storage_users_text) - .setOnCancelListener(this) - .create(); - case DLG_ERROR_SHARING: - return new AlertDialog.Builder(this) - .setTitle(R.string.dlg_error_title) - .setNeutralButton(R.string.dlg_ok, null) - .setMessage(R.string.usb_storage_error_message) - .setOnCancelListener(this) - .create(); - } - return null; - } - - private void showDialogInner(int id) { - removeDialog(id); - showDialog(id); - } - - private void switchUsbMassStorageAsync(boolean on) { - mUnmountButton.setVisibility(View.GONE); - mMountButton.setVisibility(View.GONE); - - mProgressBar.setVisibility(View.VISIBLE); - // will be hidden once USB mass storage kicks in (or fails) - - final boolean _on = on; - new Thread() { - public void run() { - if (_on) { - mStorageManager.enableUsbMassStorage(); - } else { - mStorageManager.disableUsbMassStorage(); - } - } - }.start(); - } - - private void checkStorageUsers() { - IMountService ims = getMountService(); - if (ims == null) { - // Display error dialog - showDialogInner(DLG_ERROR_SHARING); - } - String extStoragePath = Environment.getExternalStorageDirectory().toString(); - boolean showDialog = false; - try { - int[] stUsers = ims.getStorageUsers(extStoragePath); - if (stUsers != null && stUsers.length > 0) { - showDialog = true; - } else { - // List of applications on sdcard. - ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); - List<ApplicationInfo> infoList = am.getRunningExternalApplications(); - if (infoList != null && infoList.size() > 0) { - showDialog = true; - } - } - } catch (RemoteException e) { - // Display error dialog - showDialogInner(DLG_ERROR_SHARING); - } - if (showDialog) { - // Display dialog to user - showDialogInner(DLG_CONFIRM_KILL_STORAGE_USERS); - } else { - if (localLOGV) Log.i(TAG, "Enabling UMS"); - switchUsbMassStorageAsync(true); - } - } - - public void onClick(View v) { - if (v == mMountButton) { - // Check for list of storage users and display dialog if needed. - checkStorageUsers(); - } else if (v == mUnmountButton) { - if (localLOGV) Log.i(TAG, "Disabling UMS"); - switchUsbMassStorageAsync(false); - } - } - - public void onCancel(DialogInterface dialog) { - finish(); - } - -} |