summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-03-11 05:56:50 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-11 05:56:50 -0800
commit364903bac6b9bfde694f1c0c5c40b6a2af628408 (patch)
tree37eecb4315cd240a5f0eb4bb48eb74583156b369 /services
parent352987e0889b6fa8862f489bc31ba7e9de8d1cbe (diff)
parent024b4f14945bd2a285f730faa3a0fdbb6c47abc1 (diff)
downloadframeworks_base-364903bac6b9bfde694f1c0c5c40b6a2af628408.zip
frameworks_base-364903bac6b9bfde694f1c0c5c40b6a2af628408.tar.gz
frameworks_base-364903bac6b9bfde694f1c0c5c40b6a2af628408.tar.bz2
Merge "Support for USB accessory URIs" into honeycomb-mr1
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/usb/UsbDeviceSettingsManager.java29
1 files changed, 24 insertions, 5 deletions
diff --git a/services/java/com/android/server/usb/UsbDeviceSettingsManager.java b/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
index 9398979..7fde67a 100644
--- a/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
+++ b/services/java/com/android/server/usb/UsbDeviceSettingsManager.java
@@ -568,8 +568,31 @@ class UsbDeviceSettingsManager {
private void resolveActivity(Intent intent, ArrayList<ResolveInfo> matches,
String defaultPackage, UsbDevice device, UsbAccessory accessory) {
int count = matches.size();
+
// don't show the resolver activity if there are no choices available
- if (count == 0) return;
+ if (count == 0) {
+ if (accessory != null) {
+ String uri = accessory.getUri();
+ if (uri != null && uri.length() > 0) {
+ // display URI to user
+ // start UsbResolverActivity so user can choose an activity
+ Intent dialogIntent = new Intent();
+ dialogIntent.setClassName("com.android.systemui",
+ "com.android.systemui.usb.UsbAccessoryUriActivity");
+ dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ dialogIntent.putExtra(UsbManager.EXTRA_ACCESSORY, accessory);
+ dialogIntent.putExtra("uri", uri);
+ try {
+ mContext.startActivity(dialogIntent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(TAG, "unable to start UsbAccessoryUriActivity");
+ }
+ }
+ }
+
+ // do nothing
+ return;
+ }
ResolveInfo defaultRI = null;
if (count == 1 && defaultPackage == null) {
@@ -613,8 +636,6 @@ class UsbDeviceSettingsManager {
Log.e(TAG, "startActivity failed", e);
}
} else {
- long identity = Binder.clearCallingIdentity();
-
// start UsbResolverActivity so user can choose an activity
Intent resolverIntent = new Intent();
resolverIntent.setClassName("com.android.systemui",
@@ -626,8 +647,6 @@ class UsbDeviceSettingsManager {
mContext.startActivity(resolverIntent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "unable to start UsbResolverActivity");
- } finally {
- Binder.restoreCallingIdentity(identity);
}
}
}