Loading src/com/android/settings/Utils.java +2 −2 Original line number Diff line number Diff line Loading @@ -1077,9 +1077,9 @@ public final class Utils { boolean hasPreferred = hasPreferredActivities(pm, packageName) || hasUsbDefaults(usbManager, packageName); int status = pm.getIntentVerificationStatus(packageName, UserHandle.myUserId()); // consider a visible current link-handling state to be any explicitly designated behavior boolean hasDomainURLsPreference = (status == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) || (status == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER); status != PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; return context.getString(hasPreferred || hasDomainURLsPreference ? R.string.launch_defaults_some : R.string.launch_defaults_none); Loading src/com/android/settings/applications/AppLaunchSettings.java +83 −43 Original line number Diff line number Diff line Loading @@ -17,14 +17,16 @@ package com.android.settings.applications; import android.app.AlertDialog; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; import android.preference.Preference; import android.preference.SwitchPreference; import android.util.ArraySet; import android.util.Log; import android.view.View; Loading Loading @@ -52,8 +54,17 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe private static final String KEY_SUPPORTED_DOMAIN_URLS = "app_launch_supported_domain_urls"; private static final String KEY_CLEAR_DEFAULTS = "app_launch_clear_defaults"; private static final Intent sBrowserIntent; static { sBrowserIntent = new Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")); } private PackageManager mPm; private boolean mIsBrowser; private boolean mHasDomainUrls; private DropDownPreference mAppLinkState; private AppDomainsPreference mAppDomainUrls; Loading @@ -64,28 +75,50 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.installed_app_launch_settings); mAppDomainUrls = (AppDomainsPreference) findPreference(KEY_SUPPORTED_DOMAIN_URLS); mClearDefaultsPreference = (ClearDefaultsPreference) findPreference(KEY_CLEAR_DEFAULTS); mAppLinkState = (DropDownPreference) findPreference(KEY_APP_LINK_STATE); mPm = getActivity().getPackageManager(); mIsBrowser = isBrowserApp(mPackageName); mHasDomainUrls = (mAppEntry.info.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS) != 0; List<IntentFilterVerificationInfo> iviList = mPm.getIntentFilterVerifications(mPackageName); if (!mIsBrowser) { List<IntentFilterVerificationInfo> iviList = mPm.getIntentFilterVerifications(mPackageName); List<IntentFilter> filters = mPm.getAllIntentFilters(mPackageName); mAppDomainUrls = (AppDomainsPreference) findPreference(KEY_SUPPORTED_DOMAIN_URLS); CharSequence[] entries = getEntries(mPackageName, iviList, filters); mAppDomainUrls.setTitles(entries); mAppDomainUrls.setValues(new int[entries.length]); mClearDefaultsPreference = (ClearDefaultsPreference) findPreference(KEY_CLEAR_DEFAULTS); } buildStateDropDown(); } private void buildStateDropDown() { mAppLinkState = (DropDownPreference) findPreference(KEY_APP_LINK_STATE); // An app is a "browser" if it has an activity resolution that wound up // marked with the 'handleAllWebDataURI' flag. private boolean isBrowserApp(String packageName) { sBrowserIntent.setPackage(packageName); List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(sBrowserIntent, PackageManager.MATCH_ALL, UserHandle.myUserId()); final int count = list.size(); for (int i = 0; i < count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo != null && info.handleAllWebDataURI) { return true; } } return false; } private void buildStateDropDown() { if (mIsBrowser) { // Browsers don't show the app-link prefs mAppLinkState.setShouldDisableView(true); mAppLinkState.setEnabled(false); mAppDomainUrls.setShouldDisableView(true); mAppDomainUrls.setEnabled(false); } else { // Designed order of states in the dropdown: // // * always Loading Loading @@ -118,8 +151,15 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe }); } } } private boolean updateAppLinkState(final int newState) { if (mIsBrowser) { // We shouldn't get into this state, but if we do make sure // not to cause any permanent mayhem. return false; } final int userId = UserHandle.myUserId(); final int priorState = mPm.getIntentVerificationStatus(mPackageName, userId); Loading src/com/android/settings/applications/ClearDefaultsPreference.java +11 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); Loading Loading @@ -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 Loading Loading
src/com/android/settings/Utils.java +2 −2 Original line number Diff line number Diff line Loading @@ -1077,9 +1077,9 @@ public final class Utils { boolean hasPreferred = hasPreferredActivities(pm, packageName) || hasUsbDefaults(usbManager, packageName); int status = pm.getIntentVerificationStatus(packageName, UserHandle.myUserId()); // consider a visible current link-handling state to be any explicitly designated behavior boolean hasDomainURLsPreference = (status == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) || (status == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER); status != PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; return context.getString(hasPreferred || hasDomainURLsPreference ? R.string.launch_defaults_some : R.string.launch_defaults_none); Loading
src/com/android/settings/applications/AppLaunchSettings.java +83 −43 Original line number Diff line number Diff line Loading @@ -17,14 +17,16 @@ package com.android.settings.applications; import android.app.AlertDialog; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; import android.preference.Preference; import android.preference.SwitchPreference; import android.util.ArraySet; import android.util.Log; import android.view.View; Loading Loading @@ -52,8 +54,17 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe private static final String KEY_SUPPORTED_DOMAIN_URLS = "app_launch_supported_domain_urls"; private static final String KEY_CLEAR_DEFAULTS = "app_launch_clear_defaults"; private static final Intent sBrowserIntent; static { sBrowserIntent = new Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")); } private PackageManager mPm; private boolean mIsBrowser; private boolean mHasDomainUrls; private DropDownPreference mAppLinkState; private AppDomainsPreference mAppDomainUrls; Loading @@ -64,28 +75,50 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.installed_app_launch_settings); mAppDomainUrls = (AppDomainsPreference) findPreference(KEY_SUPPORTED_DOMAIN_URLS); mClearDefaultsPreference = (ClearDefaultsPreference) findPreference(KEY_CLEAR_DEFAULTS); mAppLinkState = (DropDownPreference) findPreference(KEY_APP_LINK_STATE); mPm = getActivity().getPackageManager(); mIsBrowser = isBrowserApp(mPackageName); mHasDomainUrls = (mAppEntry.info.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS) != 0; List<IntentFilterVerificationInfo> iviList = mPm.getIntentFilterVerifications(mPackageName); if (!mIsBrowser) { List<IntentFilterVerificationInfo> iviList = mPm.getIntentFilterVerifications(mPackageName); List<IntentFilter> filters = mPm.getAllIntentFilters(mPackageName); mAppDomainUrls = (AppDomainsPreference) findPreference(KEY_SUPPORTED_DOMAIN_URLS); CharSequence[] entries = getEntries(mPackageName, iviList, filters); mAppDomainUrls.setTitles(entries); mAppDomainUrls.setValues(new int[entries.length]); mClearDefaultsPreference = (ClearDefaultsPreference) findPreference(KEY_CLEAR_DEFAULTS); } buildStateDropDown(); } private void buildStateDropDown() { mAppLinkState = (DropDownPreference) findPreference(KEY_APP_LINK_STATE); // An app is a "browser" if it has an activity resolution that wound up // marked with the 'handleAllWebDataURI' flag. private boolean isBrowserApp(String packageName) { sBrowserIntent.setPackage(packageName); List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(sBrowserIntent, PackageManager.MATCH_ALL, UserHandle.myUserId()); final int count = list.size(); for (int i = 0; i < count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo != null && info.handleAllWebDataURI) { return true; } } return false; } private void buildStateDropDown() { if (mIsBrowser) { // Browsers don't show the app-link prefs mAppLinkState.setShouldDisableView(true); mAppLinkState.setEnabled(false); mAppDomainUrls.setShouldDisableView(true); mAppDomainUrls.setEnabled(false); } else { // Designed order of states in the dropdown: // // * always Loading Loading @@ -118,8 +151,15 @@ public class AppLaunchSettings extends AppInfoWithHeader implements OnClickListe }); } } } private boolean updateAppLinkState(final int newState) { if (mIsBrowser) { // We shouldn't get into this state, but if we do make sure // not to cause any permanent mayhem. return false; } final int userId = UserHandle.myUserId(); final int priorState = mPm.getIntentVerificationStatus(mPackageName, userId); Loading
src/com/android/settings/applications/ClearDefaultsPreference.java +11 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading @@ -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); Loading Loading @@ -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 Loading