androidランタイム権限onRequestPermissionsResultが実行しない問題


一、Activityで実行しない場合
Activityには
  • requestPermissions()
  • OnRequestPermissionsResult()
  • checkSelfPermission()

  • この3つの方法ですが、OnRequestPermissionsResultでは空の実装であることがわかりました.
    公式に/*nothing*/と書いてあります
    23バージョン以上のV 4パックを使用します.23以降のバージョンのV 4パッケージには、これらの方法はありません.
  • ActivityCompat.checkSelfPermission()
  • ActivityCompat.requestPermissions()
  • ActivityCompat.OnRequestPermissionsResultCallback
  • ActivityCompat.shouldShowRequestPermissionRationale()

  • コールバックを取るときにクラスがActivityを継承したらActivity Compat.OnRequestPermissionsResultCallbackというインタフェース.コールバックをもらうことができて、公式の穴かどうか分かりません.メーカーごとに携帯電話も違います.しばらくはこんなにたくさん知っていました.
    また、動的に権限を申請する場合は、リストファイルに同時に対応する権限を申請する必要があります.動的に申請したのは、リストファイルを書かなくてもいいという意味ではありません.
    二、Fragmentで実行しない場合
    Fragmentでランタイム権限を申請する場合はFragmentそのものを使って申請します
    Activityで使用するときのコードは次のとおりです.
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
            1);

    我々はFragmentで申請する際にActivity CompatではなくFragment自体を使用します.コードは以下の通りです.
    HomeFragment.this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
            1);