5

Android ベースのデバイスに共有内部ストレージのようなものはありますか? アプリケーション間の共有ファイルの場所として SDCard を使用できることは知っていますが、私が取り組んでいるプロジェクトでは、SD カードが失われる機能 (機密情報) を望んでいません。

問題は次のとおりです。App1 を使用すると、ユーザーは (たとえば) いくつかの Word ドキュメントを参照し、それらを提案された共有ストレージにダウンロードできます。ユーザーはこのファイルを Documents 2 に渡して編集し、変更を保存できます。その後、アプリ 1 は、変更されたファイルのアップロードを許可します。

簡単でない限り、ドキュメント エディターのワード/エクセルをアプリに直接組み込むのは好きではありませんか?

編集:

2つ目のアプリは「Documents 2 Go」のAndroidManifestが編集できなくなります

4

3 に答える 3

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 );

「Document 2 Go」エディターが起動してファイルを編集し、simple.txt を編集できるようになります。

注 1: Uri は、で設定された同じファイル オブジェクトから作成する必要があります setReadable()/setWritable
注 2: 他のユーザーの読み取り/書き込み権限は、ファイル システムに反映されない場合があります。adb シェルで rw-rw-rw- が表示されない場合があります

于 2014-11-24T08:11:39.997 に答える
0

ContentProvidersはあなたのソリューションだと思います。これは、異なるアプリ間でアプリケーション データを共有するための Android 推奨の方法です。

于 2012-06-28T09:09:20.630 に答える
0

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

アプリ間でデータを共有することが ContentProvider の目的です。ContentProvider を記述してアクセスする方法を知っていると仮定すると、ファイルを作成するモードの定数を含む ParcelFileDescriptor を介してファイルにアクセスできます。

ここで必要なのは、誰もがコンテンツ プロバイダーを介してファイルを読み取ることができないようにアクセスを制限することです。これは、Android のアクセス許可を使用して行います。ファイルとコンテンツ プロバイダーをホストするアプリのマニフェストに、次のように記述します。

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

両方のアプリでこれを追加します:

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

protectionLevel="signature" を使用すると、あなたが署名したアプリのみがコンテンツ プロバイダーにアクセスできるため、ファイルにアクセスできます。

于 2012-06-28T09:10:16.400 に答える