How to check permission in fragment

前端 未结 9 1932
执念已碎
执念已碎 2020-12-01 03:49

I want to check a permission inside a fragment.

my code:

        // Here, thisActivity is the current activity
        if (ContextCompat.checkSelfPe         


        
相关标签:
9条回答
  • 2020-12-01 04:43

    Fragment has requestPermissions() and onRequestPermissionsResult() methods, use it.

    But checkSelfPermission() is from ActivityCompat (not require Activity, only Context).

    if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        requestPermissions( //Method of Fragment
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
            REQUEST_PERMISSIONS_CODE_WRITE_STORAGE
        );
    } else {
        downloadImage();
    }
    
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == REQUEST_PERMISSIONS_CODE_WRITE_STORAGE) {
            if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                proceedWithSdCard();
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-01 04:47

    onRequestPermissionsResult is invoked in the activity not the fragment. Try overriding onRequestPermissionsResult in the activity instead.

    0 讨论(0)
  • 2020-12-01 04:54

    To handle permissions in a Fragment call requestPermissions method. If you override onRequestPermissionsResult method in both fragment and activity, containing that fragment, make sure to call super.onRequestPermissionsResult(...) in the activity method to propagate call to the onRequestPermissionsResult method in the fragment.

    0 讨论(0)
提交回复
热议问题