0

指定したフォルダを管理するためにDocumentsProviderを作成します。私は別のアプリがこのDocumentsProviderを使用してフォルダ内のファイルを閲覧/管理する必要があります。インテントを使用せずに直接私のアプリケーションでDocumentsProviderにアクセスするには?

intentとstartActivityを使用し、次にDocumentUIを使用してURIを取得するサンプルコードが多数見つかりました。インテントを使わずに直接アプリケーションでDocumentsProviderにアクセスすることは可能ですか?

DocumentsProviderで固定URIを使用しようとしましたが、DocumentsContractを使用してアクセスしようとしましたが、 "SecurityException:UIDとUriで永続的なアクセス許可が見つかりませんでした"というメッセージが表示されます。私もgrantUriPermission()を使用しましたが、それは役に立ちません。

返されたインテントのURIではなく、固定(定義済み)URIを使用してDocumentsProviderにアクセスする方法はありますか?

+0

「DoSUIを呼び出す多くのサンプルコードを見た。あなたがそれで何を意味するのだろうか?あなたは例を挙げることができますか? – greenapps

+0

'DocumentsProvider'のポイントは、それらのドキュメントがストレージアクセスフレームワーク(例えば、' ACTION_OPEN_DOCUMENT')を介して他のアプリケーションにアクセスできるようにすることです。それがあなたが望むものでないなら、 'DocumentsProvider'を実装しないでください。 'ACTION_OPEN_DOCUMENT'をサポートし、' DocumentsProvider'で直接操作したい場合は、 'DocumentsContract'を試してみることもできますが、クライアントアプリケーションがどのようにドキュメントを操作する権限を得るのか分かりません。 – CommonsWare

+0

はい、私はこれを試しましたが、あなたが言ったように許可の問題が発生します。 –

答えて

0

CommonsWareはコメントの中で、おそらく別の目的のものを使用しようとしていますが、あなたが言ったことを達成することは不可能ではないと言いました。

あなたは両方のアプリを所有していると思われますので、同じUIDを共有してsharedUserIdを割り当てて、DocumentsProviderと話すことができます。

また、他のアプリにURI権限を付与する、DocumentsProviderを所有するアプリで特別なアクティビティを定義することもできます。その後、あなたはそれにアクセスできるはずです。 UI以外のアクティビティを開始する意図をまだ開始する必要があるため、これが望ましいかどうかはわかりませんが。

関連する問題