在安卓上通过 WhatsApp 分享图片时出现“不支持的文件格式”错误。

9

我有一个在安卓上分享图片到whatsapp的应用程序。直到现在它一直是可以工作的。但是现在我收到了以下错误信息:

"文件格式不支持。"

没有更改任何代码。

btnWhatsapp.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {   

        if (isAppInstalled("com.whatsapp"))   {
           // APP  INSTALLED
           Intent sendIntent = new Intent(Intent.ACTION_SEND);
           String sharetext ="Try my app";
           sendIntent.putExtra(Intent.EXTRA_TEXT,sharetext );
           Uri screenshotUri = Uri.parse("android.resource://"+getPackageName()+"/drawable/"+logofilename);
           sendIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
           sendIntent.setType("image/png");
           sendIntent.setPackage("com.whatsapp");
           v.getContext().startActivity(sendIntent);

        }else{
                        Toast.makeText(getApplicationContext(),R.string.nowhatsapp,Toast.LENGTH_SHORT).show();
                }                   
            }
       });

android.resource 是一种不常见的 Uri 方案,可能并不被所有应用程序支持。此外,ACTION_SEND 实现不必同时支持 Intent 上的 EXTRA_TEXTEXTRA_STREAM - CommonsWare
你也遇到了同样的错误吗?你找到解决方案了吗? - Brinda Rathod
你找到解决方案了吗? - Darari Nur Amali
我遇到了相同的错误。有什么解决办法吗? - alierdogan7
2022年有任何解决方案吗? - Innocent
我们需要将该文件(来自内部)复制到SD卡中,然后我们就可以获得文件对象了... 现在该文件对象已经公开并且可以通过WhatsApp分享。 :D @Innocent - gumuruh
5个回答

3
您正在尝试共享的文件位于包中(您的应用程序),只有您的应用程序可以访问该文件。 您需要共享一个公共文件。
share.putExtra(Intent.EXTRA_STREAM,
        Uri.parse( Environment.getExternalStorageDirectory()+ File.separator+"temporary_file.jpg"));

像这样,其他应用程序可以访问


但是图片在我的应用程序可绘制目录中。 - Stefan Ivalinov
你可以将该drawable复制到SD卡中,读取为bitmap并使用new file()保存它,分享该文件,然后删除它,这样你就能保持所有的干净整洁。 - Jason

0

你需要从 URL 下载图像到 SD 卡,并从 SD 卡选择路径以分享到 WhatsApp


0

如果有人一直面临这个问题,那么我已经想出了解决方法。每个包含.nomedia文件的目录都无法通过编程方式共享图像/视频。

我的应用程序在Android/media中创建一个目录,我不想在画廊中显示所有剪辑,因此我已经通过编程方式创建了一个.nomedia文件,但后来我意识到,如果有人想使用我的应用程序分享视频(在WhatsApp上),.nomedia文件将不允许我的应用程序这样做,最终WhatsApp会抛出一个错误"文件格式不受支持",这在一些设备上发生。删除此文件,您的应用程序将能够共享视频。尽管不建议删除此文件,因为它可能会使用户的画廊充满无用/重复的剪辑和图像,但我目前找不到其他解决方案。


-1

请检查您的应用程序的权限,并在应用程序权限中启用存储权限,这将解决您的问题。


-1
Uri imgUri = Uri.parse(pictureFile.getAbsolutePath());
Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
whatsappIntent.putExtra(Intent.EXTRA_STREAM, imgUri);
whatsappIntent.setType("image/jpeg");
whatsappIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

try {
    activity.startActivity(whatsappIntent);
} catch (android.content.ActivityNotFoundException ex) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接