打开失败:离子 -2 中的 EACCES(权限被拒绝)
open failed: EACCES (Permission denied) in ionic -2
我在 Ionic 移动应用程序上使用 cordova-plugin-file-transfer 和 cordova-plugin-file-chooser 将一些文件上传到 Android 设备,这些设备可以使用 pdf、word、excel..等等
现在正在抛出 "exception":"/storage/emulated/0/Download/pdf-test.pdf: 打开失败:EACCES(权限被拒绝)"}".
openFile() {
console.log("openFile");
this.fileChooser.open()
.then(uri => {
console.log(uri)
const fileTransfer: FileTransferObject = this.transfer.create();
let options: FileUploadOptions = {
fileKey: 'files',
fileName: 'name.doc',
params: { resume: uri},
chunkedMode: false,
headers: {
'token': this.token,
'sid': this.sid,
'user': this.user,
'to': this.to,
'node': this.node,
'type': 'doc',
'cap': this.cap
}
}
console.log("Headers" + JSON.stringify(options));
fileTransfer.upload(uri,this.apiurl, options)
.then((data) => {
// success
console.log("Response data ->>>>>>> :- " + JSON.stringify(data));
alert("success" + JSON.stringify(data));
}, (err) => {
// error
console.log("Error data ->>>>>>> :- " + JSON.stringify(err));
alert("error" + JSON.stringify(err));
});
})
.catch(e => console.log(e));
}
我还添加了对 AndroidManifest.xml
的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Android 权限
此插件旨在支持Android新的权限检查机制。
自 Android 6.0 起,Android 权限检查机制已更改。过去,权限是在用户决定安装应用程序时授予的。现在,当 he/she 使用该应用程序时,应该由用户授予权限。
对于您(开发人员)正在使用的旧 Android 插件可能不支持此新机制或已经停止更新。所以要么找一个新的插件来解决这个问题,要么试图在旧插件中添加机制。如果你不想做这些,你可以试试这个插件。
https://ionicframework.com/docs/native/android-permissions/
filePermission() {
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE).then(
result => console.log('Has permission?', result.hasPermission),
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE)
);
}
我在 Ionic 移动应用程序上使用 cordova-plugin-file-transfer 和 cordova-plugin-file-chooser 将一些文件上传到 Android 设备,这些设备可以使用 pdf、word、excel..等等
现在正在抛出 "exception":"/storage/emulated/0/Download/pdf-test.pdf: 打开失败:EACCES(权限被拒绝)"}".
openFile() {
console.log("openFile");
this.fileChooser.open()
.then(uri => {
console.log(uri)
const fileTransfer: FileTransferObject = this.transfer.create();
let options: FileUploadOptions = {
fileKey: 'files',
fileName: 'name.doc',
params: { resume: uri},
chunkedMode: false,
headers: {
'token': this.token,
'sid': this.sid,
'user': this.user,
'to': this.to,
'node': this.node,
'type': 'doc',
'cap': this.cap
}
}
console.log("Headers" + JSON.stringify(options));
fileTransfer.upload(uri,this.apiurl, options)
.then((data) => {
// success
console.log("Response data ->>>>>>> :- " + JSON.stringify(data));
alert("success" + JSON.stringify(data));
}, (err) => {
// error
console.log("Error data ->>>>>>> :- " + JSON.stringify(err));
alert("error" + JSON.stringify(err));
});
})
.catch(e => console.log(e));
}
我还添加了对 AndroidManifest.xml
的权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Android 权限
此插件旨在支持Android新的权限检查机制。
自 Android 6.0 起,Android 权限检查机制已更改。过去,权限是在用户决定安装应用程序时授予的。现在,当 he/she 使用该应用程序时,应该由用户授予权限。
对于您(开发人员)正在使用的旧 Android 插件可能不支持此新机制或已经停止更新。所以要么找一个新的插件来解决这个问题,要么试图在旧插件中添加机制。如果你不想做这些,你可以试试这个插件。 https://ionicframework.com/docs/native/android-permissions/
filePermission() {
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE).then(
result => console.log('Has permission?', result.hasPermission),
err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE)
);
}