summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/MountService.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-09-16 12:49:00 -0700
committerJeff Sharkey <jsharkey@android.com>2012-09-18 13:26:26 -0700
commit27bd34d9d9fe99f11b80aa0bbdb402fb47ef4158 (patch)
treeda11d791bc6171b079f6af207010279d807d81a8 /services/java/com/android/server/MountService.java
parenta4b0e5590dc303df68256254f732ef632e6912f3 (diff)
Multi-user MTP.
The current MTP kernel driver at /dev/mtp_usb is exclusive, meaning only one process can have it open. In addition, each MTP session with a desktop requires unique object IDs, which doesn't hold true across users on the device. To solve these two issues, when switching users we cycle the USB host stack to disconnect both local and remote MTP connections, giving the new user's media process a chance to claim /dev/mtp_usb, and causing the desktop to initiate a new MTP session. This change also allows BroadcastReceivers to registerReceiver() allow retrieval of a current sticky broadcast. Adds a system property to override maximum users. Removes MOUNTED broadcasts for secondary users. Allows INTERACT_ACROSS_USERS to getCurrentUser(). Bug: 6925114 Change-Id: I02b4a1b535af95fb2142655887b6d15a8068d18a
Diffstat (limited to 'services/java/com/android/server/MountService.java')
-rw-r--r--services/java/com/android/server/MountService.java32
1 files changed, 0 insertions, 32 deletions
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index 32ab1542c3df..ba758e5a9a20 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -549,34 +549,6 @@ class MountService extends IMountService.Stub
}
}
- private final BroadcastReceiver mBootReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
- if (userId == -1) return;
- final UserHandle user = new UserHandle(userId);
-
- Slog.d(TAG, "BOOT_COMPLETED for " + user);
-
- // Broadcast mounted volumes to newly booted user. This kicks off
- // media scanner when a user becomes active.
- synchronized (mVolumesLock) {
- for (StorageVolume volume : mVolumes) {
- final UserHandle owner = volume.getOwner();
- final boolean ownerMatch = owner == null
- || owner.getIdentifier() == user.getIdentifier();
-
- final String state = mVolumeStates.get(volume.getPath());
-
- if (ownerMatch && (Environment.MEDIA_MOUNTED.equals(state)
- || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))) {
- sendStorageIntent(Intent.ACTION_MEDIA_MOUNTED, volume, user);
- }
- }
- }
- }
- };
-
private final BroadcastReceiver mUserReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -1309,10 +1281,6 @@ class MountService extends IMountService.Stub
mHandlerThread.start();
mHandler = new MountServiceHandler(mHandlerThread.getLooper());
- // Watch for user boot completion
- mContext.registerReceiverAsUser(mBootReceiver, UserHandle.ALL,
- new IntentFilter(Intent.ACTION_BOOT_COMPLETED), null, mHandler);
-
// Watch for user changes
final IntentFilter userFilter = new IntentFilter();
userFilter.addAction(Intent.ACTION_USER_ADDED);