Android 允许访问文件,即使权限被拒绝

Android 允许访问文件,即使权限被拒绝,android,react-native,react-native-android,Android,React Native,React Native Android,我正在工作。我已经在MainActivity.java中编写了权限代码 当我运行应用程序时,它会请求允许/拒绝文件权限。即使我点击Deny,它也允许我从存储器访问文件。问题是什么 AndroidManifest.html <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ

我正在工作。我已经在MainActivity.java中编写了权限代码

当我运行应用程序时,它会请求允许/拒绝文件权限。即使我点击Deny,它也允许我从存储器访问文件。问题是什么

AndroidManifest.html

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="23" />
MainActivity.java

public class MainActivity extends ReactActivity {

private static final int REQUEST_CODE = 101;

/**
 * Returns the name of the main component registered from JavaScript.
 * This is used to schedule rendering of the component.
 */
@Override
protected String getMainComponentName() {
    return "Test";
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    SplashScreen.show(this);  // here
    super.onCreate(savedInstanceState);
    int permission = ContextCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE);
    if (permission != PackageManager.PERMISSION_GRANTED) {
        makeRequest();
    }
}
protected void makeRequest() {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},
            REQUEST_CODE);
}
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_CODE: {

            if (grantResults.length == 0
                    || grantResults[0] !=
                    PackageManager.PERMISSION_GRANTED) {

            } else {
            }
            return;
        }
    }
  }
}
App.js

import { DocumentPicker, DocumentPickerUtil } from 'react-native-document-picker';

 pickerAttacment() {

        DocumentPicker.show({
            filetype: [DocumentPickerUtil.allFiles()],
          }, (error, res) => {
              this.props.uploadPhoto(res, (response) => {
                 alert("File Saved on Server!");
              });
          });
    }
}

    render() {
        return ( <Text onPress = {
                () => this.pickerAttacment()
            }
            style = {
                styles.textStyle
            } ></Text>

        )
    }
    /*
       @Method : uploadPhoto
       @Params :
       @Returns : *
       */
    export function uploadPhoto(file, callback) {
        return (dispatch) => {
            RNFetchBlob.fetch('POST', url , {
                'Content-Type': 'multipart/form-data',
            }, [{
                name: 'File',
                filename: file.fileName,
                data: RNFetchBlob.wrap(file.uri)
            }, ]).then((res) => {
                callback(res);
            }).catch((err) => {
                callback('error');
            })
        }
    }
已解决:

我已删除我在MainActivity中编写的权限代码

我必须在React Native中的按钮单击上编写权限代码。请参阅以下代码:

    pickerAttacment() {
      PermissionsAndroid.requestMultiple(
        [
          PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
        ], {
          title: 'Permission',
          message: 'We need your permission.',
        },
      )
        .then((permRes) => {

        if (permRes['android.permission.READ_EXTERNAL_STORAGE'] === PermissionsAndroid.RESULTS.GRANTED &&
            permRes['android.permission.WRITE_EXTERNAL_STORAGE'] === PermissionsAndroid.RESULTS.GRANTED) {
          DocumentPicker.show({
            filetype: [DocumentPickerUtil.allFiles()],
          }, (error, res) => {
            this.props.uploadPhoto(res, (response) => {
              if (response != 'error') {
                alert('File has been uploaded successfully.')
              } else {
                alert('Error in file uploading.');
              }
            });
          })
        }
      })
    }

我仍然可以访问这些文件。
?哪里什么时候怎么用?哪些文件?没有访问文件的代码。您正在检查哪个android版本?@ManishJain我正在检查6.0版本。@greenapps请检查,我添加了react本机文件获取代码。choosen文件的完整路径是什么?对于内部私有内存,您不需要权限。
    pickerAttacment() {
      PermissionsAndroid.requestMultiple(
        [
          PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
          PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
        ], {
          title: 'Permission',
          message: 'We need your permission.',
        },
      )
        .then((permRes) => {

        if (permRes['android.permission.READ_EXTERNAL_STORAGE'] === PermissionsAndroid.RESULTS.GRANTED &&
            permRes['android.permission.WRITE_EXTERNAL_STORAGE'] === PermissionsAndroid.RESULTS.GRANTED) {
          DocumentPicker.show({
            filetype: [DocumentPickerUtil.allFiles()],
          }, (error, res) => {
            this.props.uploadPhoto(res, (response) => {
              if (response != 'error') {
                alert('File has been uploaded successfully.')
              } else {
                alert('Error in file uploading.');
              }
            });
          })
        }
      })
    }