我正在尝试采用一种非常通用的方法来提供共享选项,以便从我应用的私有存储中共享图像,但我遇到的问题似乎是特定于将图像共享到Facebook应用程序(com.facebook)。武士刀):
通过ContentProvider,我通过在openFile()
中返回以下内容来提供对所需文件的访问权限:
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
分享到Facebook时,图片不会显示。但是,每个其他应用都可以工作。调试调用我的ContentProvider,我看到Facebook确实查询了ContentProvider,openFile()
被点击了。然而,图像不会出现。
答案 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因为我很懒,而且我知道我的所有图像都属于那种类型。