android - cordova.file.externalRootDirectory 不适用于 Android 11 设备

标签 android cordova

我无法在 android 11 版本的设备上下载文件。

**Details :**

cordova android 10.1.0        
"cordova-plugin-file" version="6.0.2"           
"cordova-plugin-file-transfer" version="1.7.1"           
"cordova-plugin-filepath" version="1.6.0"   

**My Code:**

下面是我编写的用于下载文件设备的代码,它在 android 9 和 10 中工作,当我以 SDK 30 为目标时,它不工作并且仅在 android 11 中失败。

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(dir) {
    dir.getFile("test.pdf", {create:true}, function(file) {
        file.createWriter(function(fileWriter) {
        fileWriter.write("byteArrays data");
            alert('Message', 'File Downloaded Successfully');
        }, function(){
            alert('Error!', "Unable to save the file");
        });
    },function(e){
        alert('Error!', e);
    });
},function(e){
    console.log(e);
});

**I tried with below code in Androidmainfest file**

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



**Config.xml file**
<preference name="AndroidInsecureFileModeEnabled" value="true" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />

如有遗漏,请告知我,提前致谢。

最佳答案

我发现插件的downloadFile 方法Cordova Advanced HTTP是下载文件的好方法。我创建了这个 example app展示它是如何工作的。

请注意,MANAGE_EXTERNAL_STORAGE 权限具有 essentially been deprecated在 Android 11 中,因此您无法再下载到共享存储(例如 cordova.file.externalRootDirectory,它被许多应用共享——存在隐私和安全风险)。尝试您的应用范围内的目录之一,例如 cordova.file.externalDataDirectory

关于android - cordova.file.externalRootDirectory 不适用于 Android 11 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70110433/

相关文章:

java - Maven、Git、Android 和 Maven 发布插件

android - 在 vuforia 增强现实应用程序中运行时选择 3d 模型

android - 显示 AlertDialog 时保持全屏

android - Sencha Touch+Phonegap+Android 应用引用错误

android - 请安装 Android 目标 : "android-21"

node.js - 在没有代理的情况下无法使用 npm ECONNRESET 安装任何东西

android - 无法在 jitpack 上发布

javascript - 具有 Web 服务调用的 Html5 应用程序可在模拟器上运行,但不能在设备上运行

iOS/Cordova 应用程序初始屏幕加载后移动

javascript - 雅虎财经查询api,想要限制为一个国家的搜索结果(Ionic cordova)