Android 允许访问文件,即使权限被拒绝
我正在工作。我已经在MainActivity.java中编写了权限代码 当我运行应用程序时,它会请求允许/拒绝文件权限。即使我点击Deny,它也允许我从存储器访问文件。问题是什么 AndroidManifest.htmlAndroid 允许访问文件,即使权限被拒绝,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
<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.');
}
});
})
}
})
}