0

我试图采取一种非常通用的方法来提供共享选项,以共享应用程序的私人存储中的图像,但我遇到了一个问题,似乎是特定于共享图像Facebook应用程序(com.facebook.katana):从应用程序私人存储分享图像到Facebook

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

    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
    
  3. 当分享至Facebook,图像不会出现。然而,每个其他应用程序都可以工作。将调用调试到我的ContentProvider中,我发现Facebook确实在查询ContentProvider,并且点击了openFile()。尽管如此,图像并未出现。

回答

0

经过多次头部搔抓之后,我意识到我正在返回null作为MIME类型。我改变了getType()结果返回“图像/ 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"; 
} 

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

相关问题