gpt4 book ai didi

android - 如何更正 NativeScript 应用程序中 "Downloads"文件夹中的读取文件?

转载 作者:行者123 更新时间:2023-12-04 01:31:22 25 4
gpt4 key购买 nike

我在 NativeScript 上编写了一个 Android 应用程序。

我在 App_Resources/Android/AndroidManifest.xml 中定义了所需的权限:

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

我知道这不足以访问存储,所以我在运行时请求权限并在系统设置中检查它。

通过浏览器将一些图像下载到下载文件夹后,我想在我的应用程序中阅读它。最初我通过 nativescript-mediafilepicker 获得了一个文件路径,但为了知道我使用了以下代码 fragment :

console.log(fs.File.exists('/storage/emulated/0/Download/7zoVG9uML7AyjwHl.png'));
const file = fs.File.fromPath('/storage/emulated/0/Download/7zoVG9uML7AyjwHl.png');
file.readSync(e => console.log('ERROR ' + e));

在控制台打印:

JS: true
JS: ERROR Error: java.io.FileNotFoundException: /storage/emulated/0/Download/7zoVG9uML7AyjwHl.png: open failed: EACCES (Permission denied)

我做错了什么?

更新我添加了 WRITE_EXTERNAL_STORAGE 权限,但没有效果:

permissions.requestPermissions(p).then(async () => {
const publicDirectory = android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
const fullPath = `${publicDirectory}/7zoVG9uML7AyjwHl.png`;
const file = fs.File.fromPath(fullPath);
file.readSync(e => console.log('ERROR ' + e));
});
JS: ERROR Error: java.io.FileNotFoundException: /storage/emulated/0/Download/7zoVG9uML7AyjwHl.png: open failed: EACCES (Permission denied)

最佳答案

所以,解决方案是:

  1. 在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  1. 在AndroidManifest.xml中添加
<application android:requestLegacyExternalStorage="true" ...>

  1. 通过字符串路径获取文件:
const file = fs.File.fromPath('/storage/emulated/0/Download/7zoVG9uML7AyjwHl.png');
file.readSync(e => console.log('ERROR ' + e));

关于android - 如何更正 NativeScript 应用程序中 "Downloads"文件夹中的读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60961764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com