0

내 앱의 개인 저장소에서 이미지를 공유하기위한 공유 옵션을 제공하는 데 매우 일반적인 접근 방식을 사용하고 있지만 이미지 공유와 관련된 문제가 발생했습니다. 페이스 북의 응용 프로그램 (com.facebook.katana) :앱을 개인 저장소에서 Facebook으로 공유

  1. 나는 EXTRA_STREAM 내 응용 프로그램의 개인 디렉토리 내에 이미지에 열린 우리당을 포함과 의도를 시작합니다. 컨텐트 프로를 통해
  2. , 나는 openFile()에서 다음을 반환하여 원하는 파일에 대한 액세스를 제공합니다 :

    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); 
    
  3. 페이스 북에 공유 이미지가 표시되지 않습니다. 그러나 다른 모든 앱은 작동합니다. 내 ContentProvider에 대한 호출을 디버깅하면 Facebook이 ContentProvider를 실제로 쿼리하고 openFile()이 발생하는 것을 알 수 있습니다. 그럼에도 이미지가 나타나지 않습니다.

답변

0

많은 머리가 긁힌 후 null을 MIME 유형으로 반환한다는 것을 깨달았습니다. 나는 "이미지/PNG"를 반환하는 getType()의 결과를 변경하고, 그것은 그 것이었다 :

@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를 반환하고 있으며, 모든 이미지가 그 유형이라는 것을 알고 있습니다.

관련 문제