0

私のアプリでは、(他のコンテンツプロバイダの中で)Dropboxが提供するコンテンツに永続的な読み取りパーミッションを保存したいと思います。 Android Dropboxアプリはストレージアクセスフレームワークをサポートしていないため、ACTION_OPEN_DOCUMENTを使用できないコンテンツを選択できるようにする代わりに、ACTION_GET_CONTENTを使用する必要があります。SAF以外のコンテンツへのパーシステントパーミッション

ただし、Driveなどの一部のコンテンツプロバイダは、ACTION_GET_CONTENT経由で返されるURIに対して永続的なアクセス権を返さないようです。 GET_CONTENT URIは持続可能ではないと考えられているので、これは期待通りです。残念ながら、私は再起動の間に参照を保持する必要があります。

最新のAPIバージョンでは、コンテンツプロバイダがSAFをサポートしていない場合、永続的なアクセス権をURIに取得する方法がないようです。本当?良い回避策とは何ですか?

コンテンツをコピーしてローカルに保存する(GET_CONTENTによって返されるDropbox URIが実際に永続性があるように見えるなど)実装されていない仕様に頼っている許可を持続させる。

答えて

0

最新のAPIバージョンでは、コンテンツプロバイダがSAFをサポートしていない場合、永続的なアクセス許可をURIに付与する方法はないようです。本当?

私の実験に基づいて、はい。より正確には、AFAICTはDocumentsProviderから得られた値Uriだけが、フレームワークが提供するものに関してパーミッション可能なパーミッションを持っています。私は普通のContentProviderがこれをどのように提供できるのか分かりません。

どのような回避策がありますか?

「悪い」回避策のリストがある場合、Dropbox固有のAPIを使用して、ユーザーがコンテンツを選択できるようにすることです。

"悪い"回避策のうち、コンテンツをコピーする可能性があります。—コンテンツを "インポート"していることをユーザーに知らせるためにUIを調整します。たとえば、実際にコピーであることを示すのに役立ちます。