--- a/mobile/android/base/GeckoAppShell.java
+++ b/mobile/android/base/GeckoAppShell.java
@@ -974,37 +974,47 @@ public class GeckoAppShell
Intent intent = getOpenURIIntent(getContext(), uri.toString(), "",
TextUtils.isEmpty(aAction) ? Intent.ACTION_VIEW : aAction, "");
return getHandlersForIntent(intent);
}
static boolean hasHandlersForIntent(Intent intent) {
- PackageManager pm = getContext().getPackageManager();
- List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
- return !list.isEmpty();
+ try {
+ PackageManager pm = getContext().getPackageManager();
+ List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+ return !list.isEmpty();
+ } catch (Exception ex) {
+ Log.e(LOGTAG, "Exception in GeckoAppShell.hasHandlersForIntent");
+ return false;
+ }
}
static String[] getHandlersForIntent(Intent intent) {
- PackageManager pm = getContext().getPackageManager();
- List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
- int numAttr = 4;
- String[] ret = new String[list.size() * numAttr];
- for (int i = 0; i < list.size(); i++) {
- ResolveInfo resolveInfo = list.get(i);
- ret[i * numAttr] = resolveInfo.loadLabel(pm).toString();
- if (resolveInfo.isDefault)
- ret[i * numAttr + 1] = "default";
- else
- ret[i * numAttr + 1] = "";
- ret[i * numAttr + 2] = resolveInfo.activityInfo.applicationInfo.packageName;
- ret[i * numAttr + 3] = resolveInfo.activityInfo.name;
+ try {
+ PackageManager pm = getContext().getPackageManager();
+ List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+ int numAttr = 4;
+ String[] ret = new String[list.size() * numAttr];
+ for (int i = 0; i < list.size(); i++) {
+ ResolveInfo resolveInfo = list.get(i);
+ ret[i * numAttr] = resolveInfo.loadLabel(pm).toString();
+ if (resolveInfo.isDefault)
+ ret[i * numAttr + 1] = "default";
+ else
+ ret[i * numAttr + 1] = "";
+ ret[i * numAttr + 2] = resolveInfo.activityInfo.applicationInfo.packageName;
+ ret[i * numAttr + 3] = resolveInfo.activityInfo.name;
+ }
+ return ret;
+ } catch (Exception ex) {
+ Log.e(LOGTAG, "Exception in GeckoAppShell.getHandlersForIntent");
+ return new String[0];
}
- return ret;
}
static Intent getIntentForActionString(String aAction) {
// Default to the view action if no other action as been specified.
if (TextUtils.isEmpty(aAction)) {
return new Intent(Intent.ACTION_VIEW);
}
return new Intent(aAction);