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);
}