7

私は外部ストレージにアクセスする必要があるカスタム化合物のビューを開発しています。外部の関係者(アクティビティやフラグメント)を関与させることなく許可の処理を実装するにはどうすればよいですか?アクティビティとフラグメント以外のアクセス許可リクエストを処理するにはどうすればよいですか?

私はビューのコンテキストを使用してアクセス許可を要求できますが、ビュー内でonRequestPermissionsResult()をどのように処理できますか?それも可能ですか?

それが不可能な場合は、何がこのような何かを処理するための最もエレガントな解決策になるのでしょうか?

答えて

5

私は、外部記憶装置に

私見にアクセスする必要があるカスタム化合物のビューを開発しています、それは建築のバグです。 Viewは、ユーザーに物を表示するためのものであり、低レベルの入力イベントを収集して高次の構成(クリック、スワイプなど)に変換するためのものです。 View等のファイル、データベース、MVC、MVP、MVVM、および同様のGUIアーキテクチャパターンを参照してくださいへの接続を持つべきではありません。

WebViewこれは、これを遵守しないため、結果としてメインのアプリケーションスレッドでディスクI/Oを実行するなどの問題が発生します。

外部の当事者(アクティビティまたはフラグメント)を使用せずに許可の処理を実装するにはどうすればよいですか?

できません。おそらくビューにこのデータが必要になる前に、許可を要求するのはアクティビティまたはフラグメントの責任です。

このようなものを処理する最も洗練されたソリューションは何ですか?

そのデータアクセスに関連したスレッド、アクセス権、およびその他の作業を管理することができるアクティビティまたはフラグメント、によって管理されている他の何かにこのViewのデータアクセス部分を抽出します。

-1

それは活動およびフラグメントでのみ可能です。

あなたができることは、あなたのビューにpublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)をコピーし、そのメソッドをコンテキストがあるアクティビティまたはフラグメントの対応するメソッドで呼び出すことです。