0

Я пытаюсь использовать общий подход к предоставлению вариантов совместного доступа к изображениям из собственного хранилища приложений, но я столкнулся с проблемой, которая, как представляется, связана с совместным использованием изображений приложение Facebook (com.facebook.katana):Совместное использование изображения из частного хранилища приложений в Facebook

  1. Я запускаю намерение с помощью EXTRA_STREAM, содержащего Uri, для изображения внутри частного каталога моего приложения.
  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 тип файла, связанного с Ури; Я возвращаю PNG здесь, потому что я ленив, и я знаю, что все мои изображения такого типа.

Смежные вопросы