Android - Intent.Action_Send 发送多个图像而不多次显示选择器对话框
Posted
技术标签:
【中文标题】Android - Intent.Action_Send 发送多个图像而不多次显示选择器对话框【英文标题】:Android - Intent.Action_Send send multiple images without showing chooser dialog multiple times 【发布时间】:2014-06-15 03:20:12 【问题描述】:在我的应用程序中,我在运行时创建位图并让用户共享它。我正在使用 ACTION_SEND 共享位图(图像)。它工作得很好,但我注意到,像 Whats App 等很少的应用程序会降低图像质量(如果超过 100 KB)并且最终用户会得到一个模糊的图像。如果我选择像 Gmail 这样的电子邮件客户端,那么图像在接收端看起来不错。我知道 WhatsApp 会压缩图片,因此为了解决这个问题,我正在考虑发送多张图片而不是一张大图片。
我想要的是, 如果 APP 必须发送三个图像,它应该只要求用户一次选择应该用于发送图像的应用程序,然后在代码中,我会确定哪个应用程序用户选择了,然后使用同一个应用程序将发送剩下两张图片。
谢谢
【问题讨论】:
【参考方案1】:我能够使用以下代码以编程方式向联系人发送多张图片。
String smsNumber = "91809XXXXXXX"; //Remove + from number
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra("jid", smsNumber + "@s.whatsapp.net");
sendIntent.setType("image/jpeg");
sendIntent.setPackage("com.whatsapp");
sendIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUriArray);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.addFlags(FLAG_ACTIVITY_NEW_TASK);
try
getApplicationContext().startActivity(sendIntent);
catch (android.content.ActivityNotFoundException ex)
ex.printStackTrace();
Toast.makeText(getApplicationContext(),"Whatsapp have not been installed.", Toast.LENGTH_SHORT).show();
catch (Exception e)
e.printStackTrace();
如果有问题请告诉我
【讨论】:
【参考方案2】:我很幸运地找到了自己
这里是代码
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
ArrayList<Uri> files = new ArrayList<Uri>();
files.add(bmpUri1); // uri of my bitmap image1
files.add(bmpUri2); // uri of my bitmap image2
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, files);
【讨论】:
您好,请分享您的代码,并说明在哪一点不起作用。 我使用完全相同的代码,它适用于我所有安装的应用程序(Gmail、Yahoo Mail、FB Messenger、短信应用程序),但不适用于 Facebook 应用程序。当 FB Post Activity 打开时,它不显示任何图像。如果我只发送 1 张图像,使用 ACTION_SEND 并通过 shareIntent.putExtra 发送 Uri,则显示一张图像。对FB可能存在的问题有什么见解吗?谢谢。 我刚刚尝试使用相同的代码在 FB 上分享,它确实有效。请问您使用的是FB版本吗?以上是关于Android - Intent.Action_Send 发送多个图像而不多次显示选择器对话框的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )