From 17e72aa90bfe81b7d25893725f897261f5172673 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Fri, 13 Sep 2013 18:40:00 -0700 Subject: [PATCH] Ignore print service settings activities if they are not exported. 1. The print spooler cannot start not exported activities and they should not be started from another application anyway. Therefore, we do not start them from settings too even though settings can do that since it is signed with the platform certificate. 2. Adding some string changes to meet the translation deadline. bug:10680224 Change-Id: I69c189e1c502985aceb68d269492f2e86de44ec4 --- res/values/strings.xml | 15 +++++++---- .../accessibility/AccessibilitySettings.java | 11 +++++++- .../print/PrintServiceSettingsFragment.java | 25 ++++++++++++++----- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4b3e26137f8..c49fe2f8690 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3410,9 +3410,8 @@ %1$s? - - %1$s can receive documents you print. - Such documents may contain sensitive data. + Your document may pass through + one or more servers on its way to the printer. No services installed @@ -3437,8 +3436,14 @@ Search - - Printers + + Searching for printers + + + Print jobs + + + Active print jobs diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 5834f993100..4d24d096850 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -20,6 +20,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.app.ActivityManagerNative; import android.app.AlertDialog; import android.app.Dialog; +import android.content.ActivityNotFoundException; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -41,6 +42,7 @@ import android.preference.PreferenceScreen; import android.provider.Settings; import android.text.TextUtils; import android.text.TextUtils.SimpleStringSplitter; +import android.util.Log; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.View; @@ -66,6 +68,8 @@ import java.util.Set; */ public class AccessibilitySettings extends SettingsPreferenceFragment implements DialogCreatable, Preference.OnPreferenceChangeListener { + private static final String LOG_TAG = "AccessibilitySettings"; + private static final String DEFAULT_SCREENREADER_MARKET_LINK = "market://search?q=pname:com.google.android.marvin.talkback"; @@ -605,7 +609,12 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements Uri marketUri = Uri.parse(screenreaderMarketLink); Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri); - startActivity(marketIntent); + try { + startActivity(marketIntent); + } catch (ActivityNotFoundException anfe) { + Log.w(LOG_TAG, "Couldn't start play store activity", + anfe); + } } }) .setNegativeButton(android.R.string.cancel, null) diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index 8dae1f081d2..87db29bb5b9 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -27,7 +27,10 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.Loader; +import android.content.pm.ActivityInfo; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.database.ContentObserver; import android.database.DataSetObserver; @@ -275,9 +278,14 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment if (!TextUtils.isEmpty(settingsTitle) && !TextUtils.isEmpty(settingsComponentName)) { Intent settingsIntent = new Intent(Intent.ACTION_MAIN).setComponent( ComponentName.unflattenFromString(settingsComponentName.toString())); - if (!getPackageManager().queryIntentActivities(settingsIntent, 0).isEmpty()) { - mSettingsTitle = settingsTitle; - mSettingsIntent = settingsIntent; + List resolvedActivities = getPackageManager().queryIntentActivities( + settingsIntent, 0); + if (!resolvedActivities.isEmpty()) { + // The activity is a component name, therefore it is one or none. + if (resolvedActivities.get(0).activityInfo.exported) { + mSettingsTitle = settingsTitle; + mSettingsIntent = settingsIntent; + } } } @@ -290,9 +298,14 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment && !TextUtils.isEmpty(addPrintersComponentName)) { Intent addPritnersIntent = new Intent(Intent.ACTION_MAIN).setComponent( ComponentName.unflattenFromString(addPrintersComponentName.toString())); - if (!getPackageManager().queryIntentActivities(addPritnersIntent, 0).isEmpty()) { - mAddPrintersTitle = addPrintersTitle; - mAddPrintersIntent = addPritnersIntent; + List resolvedActivities = getPackageManager().queryIntentActivities( + addPritnersIntent, 0); + if (!resolvedActivities.isEmpty()) { + // The activity is a component name, therefore it is one or none. + if (resolvedActivities.get(0).activityInfo.exported) { + mAddPrintersTitle = addPrintersTitle; + mAddPrintersIntent = addPritnersIntent; + } } }