The USB service caches the preferred activity preferences for USB devices
and accessories and allows permission to access the hardware based on the
user's selection. The "Clear defaults" button can now be used to clear
these settings.
Change-Id: If865df98214506cf2f1e35c8c6a3dbe319b125f2
Signed-off-by: Mike Lockwood <lockwood@android.com>
<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="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"
<application android:label="@string/settings_label"
android:icon="@drawable/ic_launcher_settings"
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.PackageManager.NameNotFoundException;
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.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;
import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
private static final boolean localLOGV = false;
private PackageManager mPm;
private static final boolean localLOGV = false;
private PackageManager mPm;
+ private IUsbManager mUsbManager;
private ApplicationsState mState;
private ApplicationsState.AppEntry mAppEntry;
private PackageInfo mPackageInfo;
private ApplicationsState mState;
private ApplicationsState.AppEntry mAppEntry;
private PackageInfo mPackageInfo;
mState = ApplicationsState.getInstance(getApplication());
mPm = getPackageManager();
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);
mCanBeOnSdCardChecker = new CanBeOnSdCardChecker();
setContentView(R.layout.installed_app_details);
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");
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);
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);
// Disable clear activities button
autoLaunchView.setText(R.string.auto_launch_disable_text);
mActivitiesButton.setEnabled(false);
mActivitiesButton.setEnabled(true);
mActivitiesButton.setOnClickListener(this);
}
mActivitiesButton.setEnabled(true);
mActivitiesButton.setOnClickListener(this);
}
// Security permissions section
LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
// Security permissions section
LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
}
} else if(v == mActivitiesButton) {
mPm.clearPackagePreferredActivities(packageName);
}
} 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) {
mActivitiesButton.setEnabled(false);
} else if(v == mClearDataButton) {
if (mAppEntry.info.manageSpaceActivityName != null) {