私は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
に置かれていますか?