問題タブ [storage-access-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Kitkat で SAF を使用してセカンダリ ストレージに複数のファイルを作成するにはどうすればよいですか?
Android 4.4 KitKat から、アプリケーションはセカンダリ ストレージに完全にアクセスできなくなりました。
Storage Access Framework を使用してアクセスできます。ファイルを作成したい場合は、ACTION_CREATE_DOCUMENT
インテントを呼び出す必要があります。
複数のファイルを同時に作成したい場合、どうすれば作成できますか? 毎回そのインテントを呼び出す必要がありますか?
android - Storage Access Framework (SAF) で SD カードの表示/非表示を有効にする追加機能
ストレージ アクセス フレームワーク (SAF) を使用しています。
[SD カードを表示] オプションを有効にする追加機能があるかどうかを知りたいのですが、そのユーザーはオーバーフロー メニューで見ることができます。
android - kitkat +でファイルピッカーなしでsdカードに書き込むことは可能ですか
ファイル ピッカーを使用せずに SD カードのルートからファイルを削除したい。
数日間探し回った後、これを行う方法が見つかりませんでした.しかし、ファイルアプリのESファイルエクスプローラーには問題はありませんが、その理由を知っている人はいますか?
私が見つけた最も近いものは、これ Lollipop 用に提示された新しい SD カード アクセス API の使用方法ですか? しかし、私はファイルピッカーを使用する必要があります
マニフェスト
android - Storage Access Framework を使用してサブフォルダーを効率的に作成する方法は?
現在、以下のコードを使用して、SAFを使用してLollipopのMicroSDにサブフォルダーを作成しています
上記のコードは正常に機能し、サブディレクトリを作成しますが、フォルダーの作成には約 5 秒かかります。私は SAF を初めて使用するので、これがサブディレクトリを見つける唯一の方法ですか、それともサブディレクトリを作成する他の効率的な方法はありますか?
内部ストレージで使用します
ほんの一瞬でフォルダーを作成します。
android - Storage Access Framework / SD で .nomedia ファイルを作成する
私は SAF を使用して、ユーザーがビデオを外部 SD カードに保存したり、カメラ アプリを使って USB ドライブに保存したりできるようにしています。ただし、それらをギャラリーに表示したくないので、.nomedia ファイルを作成する必要があります。
私は現在このコードを使用しています:
問題は、SAF が dotfile の代わりに nomedia.txt というファイルを作成することです。application/* の範囲でいくつかの異なる MIME タイプを試してみましたが、ファイルがまったく作成されません。ポインタをいただければ幸いです:)
android - ストレージ アクセス フレームワーク FileNotFoundException
Storage Access Framework でディレクトリを開くことができました。SAF はUri
開いたディレクトリに戻ります。そのディレクトリ内のファイルを開こうとするFileNotFoundException
と、ファイルが存在することさえわかります(確認しました)。
明らかに私は何か間違ったことをしています。これは私がやろうとしていることの例です:
android - ストレージ アクセス フレームワークの永続的なアクセス許可が機能しない
Android Storage Access Framework を使用して、SD カード上のいくつかのファイルにアクセスします。デバイスの再起動後にファイルを編集できるようにするには、この権限を保持することが重要です。
そのため、 Storage Access Framework のドキュメントによると、デバイスが再起動された場合でも、ユーザーがアプリを介してファイルに引き続きアクセスできるようにする Persist アクセス許可を使用します。
しかし、しばらくして、一部のユーザーのアクセス許可が取り消されていることに気付きました。書き込みにSAFを使用しようとするとandroid.system.ErrnoException: open failed: EACCES (Permission denied)
、例外が発生した後、使用している権限を確認しますが、mContext.getContentResolver().getPersistedUriPermissions()
空のリストが返されます。データベースでこのアクションを追跡しているため、ユーザーが適切なアクセス許可を提供し、そのアクセス許可が現在インストールされている Sd カードに対するものであると確信しています。
現在、この場合、ドキュメント ピッカーを表示しているため、ユーザーはもう一度新しいアクセス許可を提供できますが、ユーザーに同じアクションを実行するように求めることは、多くの場合、ユーザー フレンドリーではありません。
権限が取り消される原因は何ですか? そして、どうすればこの取り消しを防ぐことができますか?
私はすべてのデバイスで電話の複数回の再起動、時刻の変更、sd カードの挿入の取り外しをテストしましたが、安全なアクセス許可を失うことはできませんでした。
アクセス許可を取得するための次のコードがあります。
android - テスト アプリのストレージ アクセス フレームワーク
Intent.ACTION_OPEN_DOCUMENT_TREE
アプリケーションに外部ストレージ (Lollipop と Marshmallow) への書き込みアクセスを許可するために使用しています。
しかし、テストアプリケーションで外部ストレージに書き込みたいです。Intent.ACTION_OPEN_DOCUMENT_TREE
システム ダイアログを使用するため、テスト中に権限を付与できません。また、アプリケーションで許可してからテストで使用しようとしましたが、共有されていません-アプリケーションプロジェクトとテストプロジェクトは異なるパッケージです。
テスト目的で外部ストレージ全体の許可を与えるなどの回避策を知っている人はいますか? 多分いくつかのシステムプロパティを変更することによって?
adb shell setprop SOMEPROPERTY 1