android - Android - 使用权限在特定路径中下载和保存文件
问题描述
我想在我的华为(Android 8)应用程序的下载路径中创建并保存文件。
我在 React Native 应用程序上,我使用rn-fetch-blob
模块。
我的方法:
const path = `${RNFetchBlob.fs.dirs.DownloadDir}/offer.txt`;
return RNFetchBlob.fs
.writeFile(path, offer, 'utf8')
.then(() => {
alert('file create');
})
.catch(error => console.log(error));
和错误信息:
{ [错误:权限被拒绝] framesToPop:1,代码:'EUNSPECIFIED'}
还有我的 AndroidManifest.xml 文件:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我不明白为什么我有这个权限错误,一切都好吗?
任何人都可以帮助我吗?
谢谢 !
解决方案
在大于 23 的 Android SDK 版本上,您需要在运行时通过对话框提示请求权限。因此,您必须使用PermissionsAndroid
fromreact-native
才能实现这一目标。
就像是
try {
if (Platform.OS === 'android') {
const granted = yield call(
PermissionsAndroid.request,
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE
); // I used redux saga here. 'yield' keywoard. You don't have to use that. You can use async - await or Promises.
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
// Your Save flow
}
} else {
// iOS here, so you can go to your Save flow directly
}
} catch (e) {
console.log(e);
}
}
你应该看看:https ://facebook.github.io/react-native/docs/permissionsandroid
推荐阅读
- azure-stream-analytics - Azure 流分析如何展平 json 数组
- angular - 如何以角度添加点分隔路线?
- sql-server - 执行 SQL Server 2019 服务包时尝试执行未经授权的操作
- python - 如何使用 numpy 或 scipy 生成具有多个峰值的随机数据?
- javascript - 如何使用键将对象数组推入数组
- javascript - 可以访问映射数组中对象的属性(Next.js)
- python - 如何修复TypeError:只能将整数标量数组转换为标量索引
- flutter - 在 Flutter 中编写特定于平台的 UI 的有效方法
- simulation - 是否可以在两台不同的物理机上连接 Mininet 和 OpenDayLight 控制器?
- java - 如何用 Selenium 中的印地语等区域语言断言文本