summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/status/UsbStorageActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/status/UsbStorageActivity.java')
-rw-r--r--services/java/com/android/server/status/UsbStorageActivity.java272
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();
- }
-
-}