인터넷에서 데이터가 다운로드 된 2 개의 앱을 작성했습니다.android apps간에 불변의 파일 공유하기
이 데이터 (약 4MB, 일부 zip 파일)는 동일하므로 2 개의 앱간에 공유하여 사용자가 적은 대역폭과 적은 저장 공간을 사용하도록하고 싶습니다. 순간
, 나는 좋은 해결책이 발견되지 않은 :- Originaly을, 나는 대중 다운로드 디렉토리에 데이터를 저장. 이것은 간단한 해결책이지만 읽기 권한이 필요하므로이를 피하고 싶습니다. 그럼 내가 정보 제공자 사용할 수 있다고 생각 (그리고에는 InputStream을하고 ByteBuffer의 mmaped) 핵심하지만, 내 애플 리케이션이 큰 ZipResourceFile 많은 zip 파일을 을 넣어 : 일부 압축 파일 읽기 및 일부 압축 파일을 복사 내가
또한 내 데이터의 압축을 위해 ZipFile를 얻을 수있는 파일을 필요로하는 mmaped 및
그래서 루씬 데이터베이스로 사용되는, 나는 그것을 구축하는 것이 가능하다, 간단한 FileProvider 잊을 수 내 파일이 큰 ZipResourceFile에 저장 될 ZipFileProvider 좀 그런 ZipFileContentProvider을 통해의 ByteBuffer를 mmaped 얻는 경우가 길고 안전한 생활을 할 수있을 것인가,
https://github.com/jarondl/android-zipfileprovider/blob/master/src/net/jarondl/zipfileprovider/ZipFileProvider.java
을하지만 : 우이 라이브러리 같은 콘텐츠 공급자는 무엇입니까? (서비스를 사용해야합니까?) 서비스를 제공 한 ZipFileContentProvider의 프로세스가 중단되면 어떻게됩니까? 메모리 사용량은 어떻게됩니까? 주의 사항은 무엇입니까? ContentProvider는 수명이 다 된 방식으로 사용되지 않습니까?
더 좋은 솔루션이 있습니까?
는업데이트 :
정말 안드로이드가 같은 developper (다른 및 아무도)에서 몇 가지 애플 리케이션을위한 디렉토리를 공유 할 수 안됐다. 아니면 가능합니까?
UPDATE2 :
은 내가 getExternalFilesDir()에 파일을 저장하지만, 다음과 같은 공식 경고가 나를 매우 긴장하고있다 생각 (쓰기에 대해 무엇을?)에 의해 제공되는 디렉토리 비록
주의 getExternalFilesDir() 및 getExternalFilesDirs()는 MediaStore 콘텐츠 공급자가 액세스 할 수 없으며 READ_EXTERNAL_STORAGE 권한이있는 다른 응용 프로그램은 을 포함하여 외부 저장소의 모든 파일에 액세스 할 수 있습니다. 을 사용하여 파일에 대한 액세스를 완전히 제한하려면 내부 저장소에 파일 을 작성해야합니다.
ZipInputStream wrapping을 사용할 수 없습니까? ContentResolver에서 열린 InputStream을 사용할 수 없습니까? –
그것에 대해 생각하지 않았습니다. 마지막으로 zipEntry를 읽으려면 전체 파일을 탐색해야 할 때 ZipFileProvider와 비교할 때 성능이 좋지 않아야합니다 ... – Lakedaemon