将图像从应用专用存储共享到Facebook

时间:2016-07-24 00:00:32

标签: android facebook android-contentprovider android-sharing

我正在尝试采用一种非常通用的方法来提供共享选项,以便从我应用的私有存储中共享图像,但我遇到的问题似乎是特定于将图像共享到Facebook应用程序(com.facebook)。武士刀):

  1. 我使用包含Uri的EXTRA_STREAM启动一个意图到我的应用程序私人目录中的图像。
  2. 通过ContentProvider,我通过在openFile()中返回以下内容来提供对所需文件的访问权限:

    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
    
  3. 分享到Facebook时,图片不会显示。但是,每个其他应用都可以工作。调试调用我的ContentProvider,我看到Facebook确实查询了ContentProvider,openFile()被点击了。然而,图像不会出现。

1 个答案:

答案 0 :(得分:0)

经过多次努力,我意识到我将null作为MIME类型返回。我更改了getType()的结果以返回“image / png”,就是这样:Facebook接受了我的图片:

@Nullable
@Override
public String getType(@NonNull Uri uri) {
    // It's absolutely imperative that we provide the MIME type, otherwise some apps like
    // Facebook will simply ignore the file
    return "image/png";
}

我想指出你应该返回与Uri相关联的文件的实际MIME类型;我在这里回归PNG因为我很懒,而且我知道我的所有图像都属于那种类型。