내 앱이 서버에서 파일을 다운로드 한 다음 외부 타사 앱에서 파일을 열 수있는 기능을 사용하고 있습니다 (사용자가 파일을 볼 수있는 앱이 설치되어 있다고 가정 할 때). 유형).Android : 다운로드 한 파일 공유하기
파일은 MIME 형식 및 파일 확장명이 포함 된 메타 데이터와 함께 바이트 배열로 다운로드되어 저장됩니다.
사용자 정의 ContentProvider
은 내 앱이 다운로드 한 파일을 제어해야하므로 명백한 방법 인 것 같습니다. 즉, 다른 앱의 액세스가 읽기 전용이어야하고 내 앱이 파일을 삭제할 때/제어해야합니다. .
내 맞춤형 ContentProvider
을 구현할 때는 몇 가지 사항이 명확하지 않습니다. 난 단지 검토 한 자습서는 그냥 무시하고 openFile()
를 구현하고 query()
, insert()
등 '아무것도하지 않고'으로 스텁 메소드를 구현하기에 충분이
- 사이에 데이터를 공유와 관련 될 듯?
openFile()
을 구현한다고 가정하면 바이트 배열에서ParcelFileDescriptor
을 어떻게 만들 수 있습니까?
참고 : 가능한 한 API 레벨 3 (컵 케익)까지 지원해야합니다.
또 다른 가능성은 MemoryFile을 사용하는 것일 수 있습니다. 현재이 솔루션을 사용하고 있습니다. 성능은 일반 파일보다 빠릅니다. – Georgie
위의 내 의견에 대해서는 ContentFile openFile() 구현에서 MemoryFile을 사용해 보았지만 성공하지 못했습니다. 한 가지 이유는 최근 Android 버전에서 MemoryFile과 관련된 ParcelFileDescriptor에 대한 지원이 사라졌습니다. 그 전에도 액세스하려면 반사 트릭이 필요했습니다. – Georgie
바이트 배열을'ParcelFileDescriptor'에 전달할 방법이 있습니까? 보안상의 이유로 PDF 파일을 휴대폰에 저장할 수 없습니다. –