summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/res/layout/quick_settings_tile_time.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java37
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/QuickSettingsDateView.java45
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/UsbAccessoryUriActivity.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java18
12 files changed, 99 insertions, 110 deletions
diff --git a/packages/SystemUI/res/layout/quick_settings_tile_time.xml b/packages/SystemUI/res/layout/quick_settings_tile_time.xml
index 4ffbf52..910e1f6 100644
--- a/packages/SystemUI/res/layout/quick_settings_tile_time.xml
+++ b/packages/SystemUI/res/layout/quick_settings_tile_time.xml
@@ -29,10 +29,11 @@
android:hand_hour="@drawable/ic_qs_clock_hour"
android:hand_minute="@drawable/ic_qs_clock_minute"
/>
- <com.android.systemui.statusbar.policy.QuickSettingsDateView
+ <com.android.systemui.statusbar.policy.DateView
android:textAppearance="@style/TextAppearance.QuickSettings.TileView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
+ android:gravity="center"
/>
-</LinearLayout> \ No newline at end of file
+</LinearLayout>
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
index f93da08..140cc80 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsActivity.java
@@ -17,6 +17,7 @@
package com.android.systemui.recent;
import android.app.Activity;
+import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -30,6 +31,8 @@ import com.android.systemui.R;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.statusbar.tablet.StatusBarPanel;
+import java.util.List;
+
public class RecentsActivity extends Activity {
public static final String TOGGLE_RECENTS_INTENT = "com.android.systemui.TOGGLE_RECENTS";
public static final String CLOSE_RECENTS_INTENT = "com.android.systemui.CLOSE_RECENTS";
@@ -122,11 +125,15 @@ public class RecentsActivity extends Activity {
public void dismissAndGoBack() {
if (mRecentsPanel != null) {
- final SystemUIApplication app = (SystemUIApplication) getApplication();
- final RecentTasksLoader recentTasksLoader = app.getRecentTasksLoader();
- TaskDescription firstTask = mRecentsPanel.getBottomTask();
- if (firstTask != null && mRecentsPanel.simulateClick(firstTask)) {
- // recents panel will take care of calling show(false);
+ final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
+
+ final List<ActivityManager.RecentTaskInfo> recentTasks =
+ am.getRecentTasks(2,
+ ActivityManager.RECENT_WITH_EXCLUDED |
+ ActivityManager.RECENT_IGNORE_UNAVAILABLE);
+ if (recentTasks.size() > 1 &&
+ mRecentsPanel.simulateClick(recentTasks.get(1).persistentId)) {
+ // recents panel will take care of calling show(false) through simulateClick
return;
}
mRecentsPanel.show(false);
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
index 4aa2095..6cb7dec 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsHorizontalScrollView.java
@@ -76,11 +76,11 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
}
}
- public View findViewForTask(TaskDescription task) {
+ public View findViewForTask(int persistentTaskId) {
for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
View v = mLinearLayout.getChildAt(i);
RecentsPanelView.ViewHolder holder = (RecentsPanelView.ViewHolder) v.getTag();
- if (holder.taskDescription == task) {
+ if (holder.taskDescription.persistentTaskId == persistentTaskId) {
return v;
}
}
@@ -156,19 +156,19 @@ public class RecentsHorizontalScrollView extends HorizontalScrollView
}
setLayoutTransition(transitioner);
- // Scroll to end after layout.
- final ViewTreeObserver observer = getViewTreeObserver();
+ // Scroll to end after initial layout.
final OnGlobalLayoutListener updateScroll = new OnGlobalLayoutListener() {
public void onGlobalLayout() {
mLastScrollPosition = scrollPositionOfMostRecent();
scrollTo(mLastScrollPosition, 0);
+ final ViewTreeObserver observer = getViewTreeObserver();
if (observer.isAlive()) {
observer.removeOnGlobalLayoutListener(this);
}
}
};
- observer.addOnGlobalLayoutListener(updateScroll);
+ getViewTreeObserver().addOnGlobalLayoutListener(updateScroll);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
index 3a89059..ff51996 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java
@@ -95,7 +95,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
public void setAdapter(TaskDescriptionAdapter adapter);
public void setCallback(RecentsCallback callback);
public void setMinSwipeAlpha(float minAlpha);
- public View findViewForTask(TaskDescription task);
+ public View findViewForTask(int persistentTaskId);
}
private final class OnLongClickDelegate implements View.OnLongClickListener {
@@ -518,24 +518,6 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
showIfReady();
}
- public TaskDescription getBottomTask() {
- if (mRecentsContainer != null) {
- ViewGroup container = mRecentsContainer;
- if (container instanceof RecentsScrollView) {
- container = (ViewGroup) container.findViewById(
- R.id.recents_linear_layout);
- }
- if (container.getChildCount() > 0) {
- View v = container.getChildAt(container.getChildCount() - 1);
- if (v.getTag() instanceof ViewHolder) {
- ViewHolder h = (ViewHolder)v.getTag();
- return h.taskDescription;
- }
- }
- }
- return null;
- }
-
public void onWindowAnimationStart() {
if (mItemToAnimateInWhenWindowAnimationIsFinished != null) {
final int startDelay = 100;
@@ -590,7 +572,7 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
public void onTasksLoaded(ArrayList<TaskDescription> tasks, boolean firstScreenful) {
mNumItemsWaitingForThumbnailsAndIcons = firstScreenful
- ? tasks.size() : mRecentTaskDescriptions == null
+ ? tasks.size() : mRecentTaskDescriptions == null
? 0 : mRecentTaskDescriptions.size();
if (mRecentTaskDescriptions == null) {
mRecentTaskDescriptions = new ArrayList<TaskDescription>(tasks);
@@ -622,11 +604,11 @@ public class RecentsPanelView extends FrameLayout implements OnItemClickListener
setContentDescription(recentAppsAccessibilityDescription);
}
- public boolean simulateClick(TaskDescription task) {
+ public boolean simulateClick(int persistentTaskId) {
if (mRecentsContainer instanceof RecentsScrollView){
RecentsScrollView scrollView
= (RecentsScrollView) mRecentsContainer;
- View v = scrollView.findViewForTask(task);
+ View v = scrollView.findViewForTask(persistentTaskId);
if (v != null) {
handleOnClick(v);
return true;
diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
index 5e0df49..47b0113 100644
--- a/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsVerticalScrollView.java
@@ -77,11 +77,11 @@ public class RecentsVerticalScrollView extends ScrollView
}
}
- public View findViewForTask(TaskDescription task) {
+ public View findViewForTask(int persistentTaskId) {
for (int i = 0; i < mLinearLayout.getChildCount(); i++) {
View v = mLinearLayout.getChildAt(i);
RecentsPanelView.ViewHolder holder = (RecentsPanelView.ViewHolder) v.getTag();
- if (holder.taskDescription == task) {
+ if (holder.taskDescription.persistentTaskId == persistentTaskId) {
return v;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index f623692..6b9bc89 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -83,7 +83,11 @@ public class PanelBar extends FrameLayout {
// figure out which panel needs to be talked to here
if (event.getAction() == MotionEvent.ACTION_DOWN) {
final PanelView panel = selectPanelForTouchX(event.getX());
- LOG("PanelBar.onTouch: state=%d ACTION_DOWN: panel %s", mState, panel);
+ boolean enabled = panel.isEnabled();
+ LOG("PanelBar.onTouch: state=%d ACTION_DOWN: panel %s %s", mState, panel,
+ (enabled ? "" : " (disabled)"));
+ if (!enabled)
+ return false;
startOpeningPanel(panel);
}
final boolean result = mTouchingPanel.getHandle().dispatchTouchEvent(event);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 12e749d..493a92a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -30,6 +30,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
+import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.PixelFormat;
@@ -39,6 +40,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.NinePatchDrawable;
import android.inputmethodservice.InputMethodService;
+import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
@@ -259,6 +261,26 @@ public class PhoneStatusBar extends BaseStatusBar {
}
};
+ // ensure quick settings is disabled until the current user makes it through the setup wizard
+ private boolean mUserSetup = false;
+ private ContentObserver mUserSetupObserver = new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ final boolean userSetup = 0 != Settings.Secure.getIntForUser(
+ mContext.getContentResolver(),
+ Settings.Secure.USER_SETUP_COMPLETE,
+ 0 /*default */,
+ mCurrentUserId);
+ if (userSetup != mUserSetup) {
+ mUserSetup = userSetup;
+ if (mSettingsPanel != null)
+ mSettingsPanel.setEnabled(mUserSetup);
+ if (!mUserSetup && mStatusBarView != null)
+ animateCollapseQuickSettings();
+ }
+ }
+ };
+
@Override
public void start() {
mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
@@ -461,6 +483,9 @@ public class PhoneStatusBar extends BaseStatusBar {
filter.addAction(Intent.ACTION_SCREEN_ON);
context.registerReceiver(mBroadcastReceiver, filter);
+ // listen for USER_SETUP_COMPLETE setting (per-user)
+ resetUserSetupObserver();
+
return mStatusBarView;
}
@@ -1827,8 +1852,18 @@ public class PhoneStatusBar extends BaseStatusBar {
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
animateCollapsePanels();
updateNotificationIcons();
+ resetUserSetupObserver();
}
-
+
+ private void resetUserSetupObserver() {
+ mContext.getContentResolver().unregisterContentObserver(mUserSetupObserver);
+ mUserSetupObserver.onChange(false);
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), true,
+ mUserSetupObserver,
+ mCurrentUserId);
+ }
+
private void setIntruderAlertVisibility(boolean vis) {
if (!ENABLE_INTRUDERS) return;
if (DEBUG) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/QuickSettingsDateView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/QuickSettingsDateView.java
deleted file mode 100644
index c52f94b..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/QuickSettingsDateView.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * 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.systemui.statusbar.policy;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.text.format.DateFormat;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewParent;
-import android.widget.TextView;
-
-import com.android.systemui.R;
-
-import java.util.Date;
-
-public final class QuickSettingsDateView extends DateView {
-
- public QuickSettingsDateView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- protected void updateClock() {
- final Context context = getContext();
- Date now = new Date();
- CharSequence dow = DateFormat.format("MMM d, yyyy", now);
- setText(dow);
- }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbAccessoryUriActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbAccessoryUriActivity.java
index 5007cf4..ff06630 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbAccessoryUriActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbAccessoryUriActivity.java
@@ -26,6 +26,7 @@ import android.net.Uri;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
+import android.os.UserHandle;
import android.util.Log;
import com.android.internal.app.AlertActivity;
@@ -90,7 +91,7 @@ public class UsbAccessoryUriActivity extends AlertActivity
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
- startActivity(intent);
+ startActivityAsUser(intent, UserHandle.CURRENT);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "startActivity failed for " + mUri);
}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
index 030a261..3eccccd 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbConfirmActivity.java
@@ -16,23 +16,21 @@
package com.android.systemui.usb;
-import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.usb.IUsbManager;
-import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbAccessory;
+import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.IBinder;
-import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -42,7 +40,6 @@ import android.widget.TextView;
import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertController;
-
import com.android.systemui.R;
public class UsbConfirmActivity extends AlertActivity
@@ -62,10 +59,10 @@ public class UsbConfirmActivity extends AlertActivity
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- Intent intent = getIntent();
- mDevice = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
+ Intent intent = getIntent();
+ mDevice = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
mAccessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
- mResolveInfo = (ResolveInfo)intent.getParcelableExtra("rinfo");
+ mResolveInfo = (ResolveInfo) intent.getParcelableExtra("rinfo");
PackageManager packageManager = getPackageManager();
String appName = mResolveInfo.loadLabel(packageManager).toString();
@@ -117,7 +114,8 @@ public class UsbConfirmActivity extends AlertActivity
try {
IBinder b = ServiceManager.getService(USB_SERVICE);
IUsbManager service = IUsbManager.Stub.asInterface(b);
- int uid = mResolveInfo.activityInfo.applicationInfo.uid;
+ final int uid = mResolveInfo.activityInfo.applicationInfo.uid;
+ final int userId = UserHandle.myUserId();
boolean alwaysUse = mAlwaysUse.isChecked();
Intent intent = null;
@@ -129,9 +127,10 @@ public class UsbConfirmActivity extends AlertActivity
service.grantDevicePermission(mDevice, uid);
// set or clear default setting
if (alwaysUse) {
- service.setDevicePackage(mDevice, mResolveInfo.activityInfo.packageName);
+ service.setDevicePackage(
+ mDevice, mResolveInfo.activityInfo.packageName, userId);
} else {
- service.setDevicePackage(mDevice, null);
+ service.setDevicePackage(mDevice, null, userId);
}
} else if (mAccessory != null) {
intent = new Intent(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
@@ -141,10 +140,10 @@ public class UsbConfirmActivity extends AlertActivity
service.grantAccessoryPermission(mAccessory, uid);
// set or clear default setting
if (alwaysUse) {
- service.setAccessoryPackage(mAccessory,
- mResolveInfo.activityInfo.packageName);
+ service.setAccessoryPackage(
+ mAccessory, mResolveInfo.activityInfo.packageName, userId);
} else {
- service.setAccessoryPackage(mAccessory, null);
+ service.setAccessoryPackage(mAccessory, null, userId);
}
}
@@ -152,7 +151,7 @@ public class UsbConfirmActivity extends AlertActivity
intent.setComponent(
new ComponentName(mResolveInfo.activityInfo.packageName,
mResolveInfo.activityInfo.name));
- startActivity(intent);
+ startActivityAsUser(intent, new UserHandle(userId));
} catch (Exception e) {
Log.e(TAG, "Unable to start activity", e);
}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
index c384f50..6e88d0d 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbPermissionActivity.java
@@ -32,6 +32,7 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -67,7 +68,7 @@ public class UsbPermissionActivity extends AlertActivity
mDevice = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
mAccessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
mPendingIntent = (PendingIntent)intent.getParcelableExtra(Intent.EXTRA_INTENT);
- mUid = intent.getIntExtra("uid", 0);
+ mUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
mPackageName = intent.getStringExtra("package");
PackageManager packageManager = getPackageManager();
@@ -128,7 +129,8 @@ public class UsbPermissionActivity extends AlertActivity
if (mPermissionGranted) {
service.grantDevicePermission(mDevice, mUid);
if (mAlwaysUse.isChecked()) {
- service.setDevicePackage(mDevice, mPackageName);
+ final int userId = UserHandle.getUserId(mUid);
+ service.setDevicePackage(mDevice, mPackageName, userId);
}
}
}
@@ -137,7 +139,8 @@ public class UsbPermissionActivity extends AlertActivity
if (mPermissionGranted) {
service.grantAccessoryPermission(mAccessory, mUid);
if (mAlwaysUse.isChecked()) {
- service.setAccessoryPackage(mAccessory, mPackageName);
+ final int userId = UserHandle.getUserId(mUid);
+ service.setAccessoryPackage(mAccessory, mPackageName, userId);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
index f61ecb1..9928f7f 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
@@ -16,8 +16,6 @@
package com.android.systemui.usb;
-import com.android.internal.app.ResolverActivity;
-
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.ResolveInfo;
@@ -30,9 +28,11 @@ import android.os.IBinder;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.util.Log;
import android.widget.CheckBox;
+import com.android.internal.app.ResolverActivity;
import com.android.systemui.R;
import java.util.ArrayList;
@@ -92,34 +92,36 @@ public class UsbResolverActivity extends ResolverActivity {
super.onDestroy();
}
+ @Override
protected void onIntentSelected(ResolveInfo ri, Intent intent, boolean alwaysCheck) {
try {
IBinder b = ServiceManager.getService(USB_SERVICE);
IUsbManager service = IUsbManager.Stub.asInterface(b);
- int uid = ri.activityInfo.applicationInfo.uid;
+ final int uid = ri.activityInfo.applicationInfo.uid;
+ final int userId = UserHandle.myUserId();
if (mDevice != null) {
// grant permission for the device
service.grantDevicePermission(mDevice, uid);
// set or clear default setting
if (alwaysCheck) {
- service.setDevicePackage(mDevice, ri.activityInfo.packageName);
+ service.setDevicePackage(mDevice, ri.activityInfo.packageName, userId);
} else {
- service.setDevicePackage(mDevice, null);
+ service.setDevicePackage(mDevice, null, userId);
}
} else if (mAccessory != null) {
// grant permission for the accessory
service.grantAccessoryPermission(mAccessory, uid);
// set or clear default setting
if (alwaysCheck) {
- service.setAccessoryPackage(mAccessory, ri.activityInfo.packageName);
+ service.setAccessoryPackage(mAccessory, ri.activityInfo.packageName, userId);
} else {
- service.setAccessoryPackage(mAccessory, null);
+ service.setAccessoryPackage(mAccessory, null, userId);
}
}
try {
- startActivity(intent);
+ startActivityAsUser(intent, new UserHandle(userId));
} catch (ActivityNotFoundException e) {
Log.e(TAG, "startActivity failed", e);
}