0

私はDialogPreferenceから拡張されたクラスを持っており、ユーザーはカレンダーから選択することができます。 Android Mの時点で、ユーザーはカレンダーにアクセスするためにアプリが実行時に許可を与える必要があります。 ActivityまたはFragmentの場合、これは通常比較的簡単です。ActivityCompat.requestPermissions(Activity [...])またはFragmentCompat.requestPermissions(Fragment [...])への呼び出しがこのトリックを行います。カスタムの設定からどのようにアクセス権を要求する必要がありますか?

しかし、DialogPreferenceでは、DialogPreferenceを使用するActivityまたはFragmentにアクセスする明白な方法はありません。 getContext()はアクティビティを参照することが保証されないため、Activityにキャストすることは信頼できない可能性があります。 instanceOfを使用すると、getContext()Activityを参照していない問題が解決されません。

getDialog().getOwnerActivity()は有望ですが、必要な場合はnullを返します(DialogPreferenceのメソッドonBindView()など)。

Preferenceに必要なアクセス許可を要求するためのベストプラクティスは何ですか?許可の要求がPreferenceから完全に削除され、PreferenceFragmentに置かれていますか?

答えて

1

アクセス許可の要求をPreferenceから完全に削除し、PreferenceFragmentに配置する必要がありますか?

IMHO、はい。または、より正確には、環境設定を表示する前に権限を要求します。

関連する問題