Perform more robust checks for list of apps
queried by upload handler.

The upload handler presumed atleast one set of app available,
when it queries the package manager for multiple intents
such as camera,camcorder, sound recorder and documents.

But if the device has no apps, which support any of above intent
then package manager would return an empty list.

Change-Id: Ia4cd989f33a9f08da3c0bb1eebf310344ce6428e
diff --git a/src/com/android/browser/UploadHandler.java b/src/com/android/browser/UploadHandler.java
index 2041ecf..6b0a39f 100644
--- a/src/com/android/browser/UploadHandler.java
+++ b/src/com/android/browser/UploadHandler.java
@@ -39,6 +39,7 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -503,11 +504,18 @@
         ArrayList<ResolveInfo> uploadApps = new ArrayList<ResolveInfo>();
 
         //Step 1:- resolve all apps for IntentList passed
-        for (Intent i: intentList) {
-            List<ResolveInfo> intentAppsList = pm.queryIntentActivities(i,
+        for (Iterator<Intent> iterator = intentList.iterator(); iterator.hasNext();) {
+            List<ResolveInfo> intentAppsList = pm.queryIntentActivities(iterator.next(),
                                                     PackageManager.MATCH_DEFAULT_ONLY);
-            // limit only to first activity
-            uploadApps.add(intentAppsList.get(0));
+
+            // Check whether any apps are available
+            if (intentAppsList!= null && intentAppsList.size() > 0){
+                // limit only to first activity
+                uploadApps.add(intentAppsList.get(0));
+            } else {
+                iterator.remove();
+            }
+
         }
 
         // Step 2:- get all openable apps list and create corresponding intents