I wonder, is there any way to choose behavior using Intent.createChooser
method?
For example, I have an image, which I would like send by e-mail, if it's chosen (first option). And on second option I'd like to send sms
with the link on this image
(For which I'll need complex actions - upload image to the sever, retrieve download link, which I'd like to be in the sms
and paste it to the sms
)
Could you possibly come up with any suggestion, what should I do to accomplish the second task?
I believe I can send an e-mail with image with something like this:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("application/image");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{textMail});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Some Subj");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Some Extra Text");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(fileUri));
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
UPD: I realized, that what I truly needed is to intercept the user click, if the sms
was chosen in intent chooser. So, the question is how it might be accomplished?
1)Create Intent to perform share or send operation,
Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
email.putExtra(Intent.EXTRA_SUBJECT, "Hi");
email.putExtra(Intent.EXTRA_TEXT, "Hi,This is Test");
email.setType("text/plain");
2)Create AlertDialog to set the Application in the alertdialog,
final Dialog dialog = new Dialog(Custom_chooser.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = Gravity.CENTER;
dialog.getWindow().setAttributes(WMLP);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setCanceledOnTouchOutside(true);
dialog.setContentView(R.layout.about_dialog);
dialog.show();
3)Get the list of application related to the particular intent using the ResolveInfo
List<ResolveInfo> launchables=pm.queryIntentActivities(email, 0);
Collections.sort(launchables,newResolveInfo.DisplayNameComparator(pm));
4))Set the list of application to the custom listview.
adapter=new AppAdapter(pm, launchables);
lv.setAdapter(adapter);
5)Finally,lanch the particular application when choose the application from the list of application in listview,
ResolveInfo launchable=adapter.getItem(position);
ActivityInfo activity=launchable.activityInfo;
ComponentName name=new ComponentName(activity.applicationInfo.packageName,
activity.name);
email.addCategory(Intent.CATEGORY_LAUNCHER);
email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
email.setComponent(name);
startActivity(email);
For more refer this link:http://velmuruganandroidcoding.blogspot.in/2014/01/custom-chooser-android-in-example.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With