Fix for upload handler

Change-Id: I04689ba507719f3cb55683acf1e8427b1e2c6e07
diff --git a/src/com/android/browser/UploadDialog.java b/src/com/android/browser/UploadDialog.java
index d96c486..a91613e 100644
--- a/src/com/android/browser/UploadDialog.java
+++ b/src/com/android/browser/UploadDialog.java
@@ -41,7 +41,6 @@
 import android.content.pm.ResolveInfo;
 import android.content.pm.PackageManager;
 
-import java.util.ArrayList;
 import java.util.List;
 
 public class UploadDialog extends AppItem {
@@ -55,21 +54,8 @@
         this.apps = null;
     }
 
-    public void getUploadableApps(List<Intent> intents) {
-
-        ArrayList<ResolveInfo> uploadApps = new ArrayList<ResolveInfo>();
-
-        PackageManager pm = activity.getPackageManager();
-
-        for (Intent currentIntent: intents) {
-            List<ResolveInfo> appsList = pm.queryIntentActivities(currentIntent,
-                PackageManager.MATCH_DEFAULT_ONLY);
-            for (ResolveInfo res : appsList) {
-                uploadApps.add(res);
-            }
-        }
-
-        this.apps = uploadApps;
+    public void getUploadableApps(List<ResolveInfo> apps, List<Intent> intents) {
+        this.apps = apps;
         this.uploadIntents = intents;
     }
 
@@ -78,7 +64,6 @@
         final AppAdapter adapter = new AppAdapter(activity, activity.getPackageManager(),
                                     R.layout.app_row, this.apps);
 
-
         AlertDialog.Builder builderSingle = new AlertDialog.Builder(activity);
         builderSingle.setIcon(R.mipmap.ic_launcher_browser_swe);
         builderSingle.setTitle(activity.getString(R.string.choose_upload));
@@ -87,12 +72,10 @@
             @Override
             public void onClick(DialogInterface dialog, int position) {
                 dialog.dismiss();
-                Intent chooserIntent = Intent.createChooser(uploadIntents.get(position), "Upload Via");
-                uploadHandler.initiateActivity(chooserIntent);
+                uploadHandler.initiateActivity(uploadIntents.get(position));
             }
         });
 
-
         builderSingle.setOnCancelListener(new DialogInterface.OnCancelListener()
             {
                @Override
@@ -104,6 +87,5 @@
         });
 
         builderSingle.show();
-
     }
 }
\ No newline at end of file
diff --git a/src/com/android/browser/UploadHandler.java b/src/com/android/browser/UploadHandler.java
index 655d642..34de006 100644
--- a/src/com/android/browser/UploadHandler.java
+++ b/src/com/android/browser/UploadHandler.java
@@ -40,7 +40,6 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Vector;
 
 /**
  * Handle the file upload callbacks from WebView here
@@ -494,22 +493,34 @@
             intentList.add(createSoundRecorderIntent());
         }
 
-        // get all openable apps list and create corresponading intents
         PackageManager pm = mController.getActivity().getPackageManager();
-        List<ResolveInfo> openableAppsList = pm.queryIntentActivities(openable, 0);
-        for (int j = 0, n = openableAppsList.size(); j < n; j++ ) {
-                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
-                i.setType(openableMimeType);
-                ActivityInfo activityInfo = openableAppsList.get(j).activityInfo;
-                ComponentName name = new ComponentName(activityInfo.applicationInfo.packageName,
-                                            activityInfo.name);
-                i.setComponent(name);
-                intentList.add(i);
+        ArrayList<ResolveInfo> uploadApps = new ArrayList<ResolveInfo>();
+
+        //Step 1:- resolve all apps for IntentList passed
+        for (Intent i: intentList) {
+            List<ResolveInfo> intentAppsList = pm.queryIntentActivities(i,
+                                                    PackageManager.MATCH_DEFAULT_ONLY);
+            // limit only to first activity
+            uploadApps.add(intentAppsList.get(0));
         }
 
+        // Step 2:- get all openable apps list and create corresponding intents
+        List<ResolveInfo> openableAppsList = pm.queryIntentActivities(openable,
+                                                PackageManager.MATCH_DEFAULT_ONLY);
+        // limit only to first activity
+        ResolveInfo topOpenableApp = openableAppsList.get(0);
+        uploadApps.add(topOpenableApp);
+        ActivityInfo activityInfo = topOpenableApp.activityInfo;
+        ComponentName name = new ComponentName(activityInfo.applicationInfo.packageName,
+                                    activityInfo.name);
+        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
+        i.setType(openableMimeType);
+        i.setComponent(name);
+        intentList.add(i);
 
+        // Step 3: Pass all the apps and their corresponding intents to uploaddialog
         UploadDialog upDialog = new UploadDialog(mController.getActivity());
-        upDialog.getUploadableApps(intentList);
+        upDialog.getUploadableApps(uploadApps, intentList);
         upDialog.loadView(this);
     }