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是因爲我很懶,而且我知道我的所有圖像都屬於這種類型。

相關問題