gpt4 book ai didi

安卓。自定义意向选择器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:40 24 4
gpt4 key购买 nike

我想知道,有没有什么方法可以使用 Intent.createChooser 方法来选择行为?例如,我有一张图片,如果它被选中(第一个选项),我想通过电子邮件发送它。在第二个选项中,我想用这张图片上的链接发送 sms(为此我需要复杂的操作 - 将图像上传到服务器,检索下载链接,我想将其放在 sms 中并将其粘贴到 sms )

你能不能给我点建议,我应该怎么做才能完成第二个任务?

我相信我可以发送一封带有图像的电子邮件:

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:我意识到,如果在 Intent 选择器中选择了 sms,我真正需要的是拦截用户点击。那么,问题是如何实现它?

最佳答案

1)创建Intent进行分享或发送操作,

Intent email = new Intent(Intent.ACTION_SEND);
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"velmurugan@androidtoppers.com"});
email.putExtra(Intent.EXTRA_SUBJECT, "Hi");
email.putExtra(Intent.EXTRA_TEXT, "Hi,This is Test");

email.setType("text/plain");

2)创建AlertDialog,在alertdialog中设置Application,

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)使用ResolveInfo获取与特定 Intent 相关的应用程序列表

List<ResolveInfo> launchables=pm.queryIntentActivities(email, 0);
Collections.sort(launchables,newResolveInfo.DisplayNameComparator(pm));

4))将应用程序列表设置为自定义 ListView 。

adapter=new AppAdapter(pm, launchables);
lv.setAdapter(adapter);

5)最后,在 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);

有关更多信息,请参阅此链接:http://velmuruganandroidcoding.blogspot.in/2014/01/custom-chooser-android-in-example.html

关于安卓。自定义意向选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com