繁体   English   中英

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

[英]Sharing image from app private storage to Facebook

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

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

     return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
  3. 与Facebook分享时,该图片不会显示。 但是,其他所有应用程序都可以正常工作。 在调试对我的ContentProvider的调用时,我看到Facebook确实确实在查询ContentProvider,并且点击了openFile() 但是,该图像没有出现。

经过一番摸索之后,我意识到我正在将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是因为我很懒,而且我知道我所有的图像都是这种类型的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM