0

私は、アプリのプライベートストレージから画像を共有するための共有オプションを提供する際に非常に一般的なアプローチを取ろうとしていますが、画像の共有に固有の問題が発生しましたFacebookアプリケーション(com.facebook.katana):アプリをプライベートストレージからFacebookに共有する

  1. 私は、アプリケーションのプライベートディレクトリ内のイメージにUriを含むEXTRA_STREAMでインテントを開始します。 ContentProviderを通じ
  2. 、私はopenFile()に次のように返すことによって、目的のファイルへのアクセスを提供します。

    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
    
  3. のFacebookに共有する場合、画像は表示されません。しかし、他のすべてのアプリは動作します。私のContentProviderへの呼び出しをデバッグすると、Facebookは実際にContentProviderにクエリを行い、openFile()がヒットしていることがわかります。それでもイメージは表示されません。

答えて

0

多くの頭が擦れた後、私はnullをMIMEタイプとして返​​すことを認識しました。私は、「画像/ PNG」を返すようにgetType()の結果を変更し、それはそれだった: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タイプを返す必要があることを指摘するだろうウリ。私は怠け者なのでここでPNGを返しています。私はすべての画像がそのタイプのものであることを知っています。