Android 不处理权限的操作被拒绝

Android 不处理权限的操作被拒绝,android,android-fragments,android-permissions,Android,Android Fragments,Android Permissions,当我的片段膨胀时,它会打开一个对话框,以获得android 6.0+所需的权限写入外部存储。我遵循了每一个教程,但当权限被授予或拒绝时,我的任何操作都不会执行。 我希望应用程序关闭,并在权限被拒绝时显示祝酒词,这意味着当应用程序重新打开时,权限将再次被询问 片段开始: onRequestPermissionsResult: 应用程序确实授予/拒绝该权限,但忽略toast或snackbar。 欢迎所有建议。谢谢 片段内部有一些变化 请像下面这样试试 private void checkLocat

当我的片段膨胀时,它会打开一个
对话框
,以获得android 6.0+所需的权限
写入外部存储
。我遵循了每一个教程,但当权限被授予或拒绝时,我的任何操作都不会执行。 我希望应用程序关闭,并在权限被拒绝时显示祝酒词,这意味着当应用程序重新打开时,
权限将再次被询问

片段开始:

onRequestPermissionsResult:

应用程序确实授予/拒绝该权限,但忽略toast或snackbar。
欢迎所有建议。谢谢

片段内部有一些变化 请像下面这样试试

 private void checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this.mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {


            //Prompt the user once explanation has been shown
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);


        } else {
            // No explanation needed, we can request the permission.
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);
        }
    }
}
在您的案例中,其中
MY\u PERMISSIONS\u REQUEST\u code=1
(1)如果您的应用已被授予权限,您将无法通过此代码查看权限对话框

if (ContextCompat.checkSelfPermission(getActivity(),
        Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED)
因此,请转到设置-应用程序-你的应用程序-并禁用已授予的权限,然后再次运行你的应用程序


(2) onCreateView是否正确返回myView?在示例代码中,没有“return myView;”

问题在于
ActivityCompat.requestPermissions
。在您的情况下,
onRequestPermissionsResult
将在活动中调用,而不是在片段中调用。当您使用片段的
requestPermissions
函数时,它将调用片段的
onRequestPermissionsResult
@aborocz。您的解释很有道理。谢谢,我将代码移到了我的活动中,因为它无法从片段内部工作。现在它工作得很好。谢谢。我尝试插入上面的代码,但它需要API级别23+,在我的应用程序中,我正在使用(并希望继续使用)API级别19+,是否有解决方法?感谢api 19,无需检查任何许可,因为应用许可从api 23开始
 private void checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this.mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {


            //Prompt the user once explanation has been shown
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);


        } else {
            // No explanation needed, we can request the permission.
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);
        }
    }
}
if (ContextCompat.checkSelfPermission(getActivity(),
        Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED)
public static final int RequestPermissionCodeStorage = 105; // Declare Global Variable    

     public boolean checkStoragePermission() {

                if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

                    int result = ContextCompat.checkSelfPermission(this,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE);
                    if (result == PackageManager.PERMISSION_GRANTED) {
                        return true;
                    } else {
                        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestPermissionCodeStorage);
                        return false;
                    }
                } else {
                    return true;
                }
            }


    @Override
        public void onRequestPermissionsResult(int requestCode,
                                               String permissions[], int[] grantResults) {
            switch (requestCode) {

                case RequestPermissionCodeStorage: {

                    if (grantResults.length > 0
                            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    } else {
                        Toast.makeText(this, "Allow Permission of Storage", Toast.LENGTH_LONG).show();
                        finish();
                    }
                    return;
                }
            }
        }