0

Ich versuche, die Freigabeoptionen für die Freigabe von Bildern aus dem privaten Speicher meiner App sehr allgemein zu verwenden, habe jedoch ein Problem festgestellt, das für die Freigabe von Bildern typisch ist die Facebook-App (com.facebook.katana):Freigabe von Bildern aus dem privaten Speicher der App an Facebook

  1. Ich starte eine Absicht mit EXTRA_STREAM mit einem Uri zu einem Bild im privaten Verzeichnis meiner App.
  2. Durch eine Contentprovider, ich bieten Zugriff auf die gewünschte Datei durch den folgenden in openFile() Rückkehr:

    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
    
  3. Wenn Book teilen, wird das Bild nicht angezeigt. Jede andere App funktioniert jedoch. Beim Debuggen von Anrufen in meinen ContentProvider sehe ich, dass Facebook tatsächlich den ContentProvider abfragt und openFile() getroffen wird. Trotzdem erscheint das Bild nicht.

Antwort

0

Nach langem Kopf kratzen, erkannte ich, ich null als MIME-Typ zurückkehrte. Ich änderte das Ergebnis der getType() „image/png“ zurückzukehren, und das war es: Facebook mein Bild akzeptiert:

@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"; 
} 

Ich möchte darauf hinweisen, dass Sie sollten die tatsächlichen MIME-Typ der Datei zurück, die mit der Uri; Ich gebe PNG hier zurück, weil ich faul bin, und ich weiß, dass alle meine Bilder von diesem Typ sind.