2012-06-28 5 views
4

안드로이드 기반 장치에 공유 된 내부 저장소 같은 것이 있습니까? SDCard를 응용 프로그램간에 공유 파일 위치로 사용할 수 있다는 것을 알고 있지만, 현재 작업중인 프로젝트에서 SD 카드가 누락 될 가능성 (민감한 자료)을 원하지 않습니다.안드로이드 공유 내부 저장소

문제는 다음과 같습니다. App1을 사용하면 사용자는 일부 워드 문서를 탐색하여 제안 된 공유 저장소로 다운로드 할 수 있습니다.이 파일을 Documents 2로 이동하여 변경 내용을 저장하고 이동합니다. App 1은 변경된 파일의 업로드를 허용합니다.

내가 쉽게 문서 편집기를 작성하는 것을 좋아하지 않는다.

편집 :

두 번째 응용 프로그램이 나는 그것의 AndroidManifest를

+0

콘텐츠 제공자 –

+0

을 시도 할 수있다. fos = openFileOutput ("test4.doc", Context.MODE_WORLD_READABLE); 파일을 읽을 수는 있지만 저장하지는 못하게합니다. MODE_WORLD_WRITEABLE은 docs2go가 파일을 읽을 수있게합니다. ( – Andy

답변

0

내가 ContentProviders이 솔루션이라고 생각을 편집 할 수 없습니다 "이동이 문서 2"입니다. 다른 앱간에 애플리케이션 데이터를 공유하기위한 Android 권장 방법입니다.

0

https://stackoverflow.com/a/6708681/804447

응용 프로그램 간의 데이터 공유는 ContentProviders가있는 것입니다. ContentProvider를 작성하고 액세스하는 방법을 알고 있다고 가정하면 파일을 작성하는 모드에 대한 상수를 포함하는 ParcelFileDescriptor를 통해 파일에 액세스 할 수 있습니다.

지금 필요한 것은 모든 사용자가 콘텐츠 제공 업체를 통해 파일을 읽을 수 없도록 액세스를 제한하는 것이며, Android 권한을 통해 액세스를 제한하는 것입니다. 하나 개의 앱에 매니페스트 파일과 콘텐츠 공급자를 호스팅 할 일이 같은 쓰기에서 : protectionLevel = 사용하여

<uses-permission android:name="com.example.android.provider.ACCESS" /> 

:

<permission android:name="com.example.android.provider.ACCESS" android:protectionLevel="signature"/> 

을 두 앱 모두이 추가 "서명"은 귀하가 서명 한 앱만 귀하의 콘텐츠 제공 업체 및 귀하의 파일에 액세스 할 수 있습니다.

+0

두 앱 모두 Manifest에 액세스 할 수 없습니다. – Andy

1

나는 txt 파일에 대해 비슷한 상황에 직면했으며이를 수행했다.

File downloadedFile= new File(context.getFilesDir(), "simple.txt"); 
downloadedFile.setReadable(true, false); 
downloadedFile.setWritable(true, false); //set read/write for others 
Uri downloadFileUri = Uri.fromFile(downloadedFile); 
Intent intentToEditFile = new Intent(Intent.ACTION_EDIT); 
intentToEditFile.setDataAndType(downloadFileUri, "text/plain"); 
context.startActivity(intentToEditFile); 

지금 '문서 2 이동'편집기를 사용하여 파일을 편집 시작됩니다 및 는

주 1 simple.txt 편집 할 수 있습니다 : 열린 우리당이 설정된 동일한 파일 개체를 만들 수 있어야 setReadable()/setWritable.
참고 2 : 다른 사용자에 대한 읽기/쓰기 권한이 파일 에 반영되지 않을 수 있습니다. 어떤 때는 rw-rw-rw-adb 쉘에서 볼 수 없다.