Disable app-link preferences for browser apps

Also make sure that the 'Clear defaults' action unsets the app's
standing as the default browser, when applicable.

Bug 23751034

Change-Id: I6131b763bfa76ba38d18cad2abbb35caffe789aa
This commit is contained in:
Christopher Tate
2015-09-08 15:41:08 -07:00
parent 47e870adc8
commit 90de3bebf4
3 changed files with 94 additions and 44 deletions

View File

@@ -93,9 +93,13 @@ public class ClearDefaultsPreference extends Preference {
@Override
public void onClick(View v) {
if (mUsbManager != null) {
final int userId = UserHandle.myUserId();
mPm.clearPackagePreferredActivities(mPackageName);
if (isDefaultBrowser(mPackageName)) {
mPm.setDefaultBrowserPackageName(null, userId);
}
try {
mUsbManager.clearDefaults(mPackageName, UserHandle.myUserId());
mUsbManager.clearDefaults(mPackageName, userId);
} catch (RemoteException e) {
Log.e(TAG, "mUsbManager.clearDefaults", e);
}
@@ -122,6 +126,7 @@ public class ClearDefaultsPreference extends Preference {
TextView autoLaunchView = (TextView) mRootView.findViewById(R.id.auto_launch);
boolean autoLaunchEnabled = Utils.hasPreferredActivities(mPm, mPackageName)
|| isDefaultBrowser(mPackageName)
|| Utils.hasUsbDefaults(mUsbManager, mPackageName);
if (!autoLaunchEnabled && !hasBindAppWidgetPermission) {
resetLaunchDefaultsUi(autoLaunchView);
@@ -165,6 +170,11 @@ public class ClearDefaultsPreference extends Preference {
return true;
}
private boolean isDefaultBrowser(String packageName) {
final String defaultBrowser = mPm.getDefaultBrowserPackageName(UserHandle.myUserId());
return packageName.equals(defaultBrowser);
}
private void resetLaunchDefaultsUi(TextView autoLaunchView) {
autoLaunchView.setText(R.string.auto_launch_disable_text);
// Disable clear activities button