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 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制