OSDN Git Service

am 0552d336: DO NOT MERGE: InstalledAppDetails: "Clear defaults" button now clears...
authorMike Lockwood <lockwood@android.com>
Wed, 2 Mar 2011 23:38:51 +0000 (15:38 -0800)
committerAndroid Git Automerger <android-git-automerger@android.com>
Wed, 2 Mar 2011 23:38:51 +0000 (15:38 -0800)
* commit '0552d3366487b27c619c055a04c81b8af0b84d33':
  DO NOT MERGE: InstalledAppDetails: "Clear defaults" button now clears USB service settings

AndroidManifest.xml
src/com/android/settings/applications/InstalledAppDetails.java

index 6746ac9..d1ba508 100644 (file)
@@ -41,6 +41,7 @@
     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
     <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.MOVE_PACKAGE" />
+    <uses-permission android:name="android.permission.MANAGE_USB" />
 
     <application android:label="@string/settings_label"
             android:icon="@drawable/ic_launcher_settings"
index 912cc3e..2499b5e 100644 (file)
@@ -37,10 +37,12 @@ import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.hardware.usb.IUsbManager;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -74,6 +76,7 @@ public class InstalledAppDetails extends Activity
     private static final boolean localLOGV = false;
     
     private PackageManager mPm;
+    private IUsbManager mUsbManager;
     private ApplicationsState mState;
     private ApplicationsState.AppEntry mAppEntry;
     private PackageInfo mPackageInfo;
@@ -294,7 +297,9 @@ public class InstalledAppDetails extends Activity
         
         mState = ApplicationsState.getInstance(getApplication());
         mPm = getPackageManager();
-        
+        IBinder b = ServiceManager.getService(Context.USB_SERVICE);
+        mUsbManager = IUsbManager.Stub.asInterface(b);
+
         mCanBeOnSdCardChecker = new CanBeOnSdCardChecker();
         
         setContentView(R.layout.installed_app_details);
@@ -421,8 +426,14 @@ public class InstalledAppDetails extends Activity
         List<IntentFilter> intentList = new ArrayList<IntentFilter>();
         mPm.getPreferredActivities(intentList, prefActList, packageName);
         if(localLOGV) Log.i(TAG, "Have "+prefActList.size()+" number of activities in prefered list");
+        boolean hasUsbDefaults = false;
+        try {
+            hasUsbDefaults = mUsbManager.hasDefaults(packageName, mAppEntry.info.uid);
+        } catch (RemoteException e) {
+            Log.e(TAG, "mUsbManager.hasDefaults", e);
+        }
         TextView autoLaunchView = (TextView)findViewById(R.id.auto_launch);
-        if (prefActList.size() <= 0) {
+        if (prefActList.size() <= 0 && !hasUsbDefaults) {
             // Disable clear activities button
             autoLaunchView.setText(R.string.auto_launch_disable_text);
             mActivitiesButton.setEnabled(false);
@@ -431,7 +442,7 @@ public class InstalledAppDetails extends Activity
             mActivitiesButton.setEnabled(true);
             mActivitiesButton.setOnClickListener(this);
         }
-         
+
         // Security permissions section
         LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
         AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
@@ -740,6 +751,11 @@ public class InstalledAppDetails extends Activity
             }
         } else if(v == mActivitiesButton) {
             mPm.clearPackagePreferredActivities(packageName);
+            try {
+                mUsbManager.clearDefaults(packageName, mAppEntry.info.uid);
+            } catch (RemoteException e) {
+                Log.e(TAG, "mUsbManager.clearDefaults", e);
+            }
             mActivitiesButton.setEnabled(false);
         } else if(v == mClearDataButton) {
             if (mAppEntry.info.manageSpaceActivityName != null) {