onRequestPermissionsResult not being called in fragment if defined in both fragment and activity

前端 未结 15 1328
余生分开走
余生分开走 2020-11-28 22:14

I have a fragment in which I have recyclerview and setting data in this recyclerview using recyclerview adapter.

Now, I am having a button in the adapter\'s list ite

15条回答
  •  南方客
    南方客 (楼主)
    2020-11-28 22:50

    This is a common mistake that people make when coding for marshmallow.

    When in AppCompatActivity, you should use ActivityCompat.requestPermissions; When in android.support.v4.app.Fragment, you should use simply requestPermissions (this is an instance method of android.support.v4.app.Fragment) If you call ActivityCompat.requestPermissions in a fragment, the onRequestPermissionsResult callback is called on the activity and not the fragment.

    requestPermissions(permissions, PERMISSIONS_CODE);
    

    If you are calling this code from a fragment it has it’s own requestPermissions method.

    So basic concept is, If you are in an Activity, then call

    ActivityCompat.requestPermissions(this,
                                new String[]{Manifest.permission.CAMERA},
                                MY_PERMISSIONS_REQUEST_CAMERA);
    

    and if in a Fragment, just call

    requestPermissions(new String[]{Manifest.permission.CAMERA},
                                MY_PERMISSIONS_REQUEST_CAMERA);
    

    For the reference, I have obtained the answer from this link https://www.coderzheaven.com/2016/10/12/onrequestpermissionsresult-not-called-on-fragments/

提交回复
热议问题