当前位置: 首页 > 知识库问答 >
问题:

Android 11中JavaScript下的原始文件路径访问

耿和韵
2023-03-14

1)android TargetSDKVersion30 requestLegacyExternalStorage=false。

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.example.ui"
        minSdkVersion 21
        targetSdkVersion 30
        }
     }
    }

在基于cordova的android应用程序中,从javascript级别完成XMLHttpRequest请求。

var xhr = new XMLHttpRequest();
xhr.open("GET", lFileUrl, true);
xhr.responseType = "blob";
UI.Util.info("PtxUtils.getInlineAttachmnetJson() >> inside xhr.open");
xhr.onload = function(e) {
try {
UI.Util.info("PtxUtils.getInlineAttachmnetJson() >> inside xhr.onload");
}
                

3)XMLHttpRequest引发错误

ERR_ACCESS_DENIED, when getFilesDir() API used.
PtxUtils.js:2950 GET 

file:///data/user/0/com.example.ui/files/KK&T%20SEW_temp/IMG-20200630-223714.jpg net::ERR_ACCESS_DENIED

23:09:57.058 PtxUtils.js:2950 XHR failed loading: GET "file:///data/user/0/com.example.ui/files/KK&T%20SEW_temp/IMG-20200630-223714.jpg".
ERR_ACCESS_DENIED, when getExternalFilesDir()() API used.

PtxUtils.js:2950 GET file:///storage/emulated/0/Android/data/com.example.ui/files/KK&T%20SEW_temp/IMG-20200701-135735.jpg net::ERR_ACCESS_DENIED

PtxUtils.js:2950 XHR failed loading: GET "file:///storage/emulated/0/Android/data/com.example.ui/files/KK&T%20SEW_temp/IMG-20200701-135735.jpg".    

5)android targetSdkVersion 29 requestLegacyExternalStorage=false

with getFilesDir() path getExternalFilesDir() XMLHttpRequest is pass with no error, file data is retrieved.




                        

共有1个答案

江航
2023-03-14

在我看来,您可能需要以下权限:

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

为了更好地衡量,我也会尝试:

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

并把这个放在清单上:

<application
    android:usesCleartextTraffic="true">
</application>
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowFileAccess(true);
 类似资料:
  • 在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。 比如-- -用于上载的文件名为Questions.docx -则orignalFileName将为“问题” -文件扩展名将为“.docx” -上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528

  • 我一直在使用本教程对图片进行人脸检测。问题是当我获取java上使用的文件路径时 我怎么能在android Studio上翻译。我试着把我的lbpcascade_frontalface.xml放在原始资源上。Cascade分类器是opencv库提供的一个类。唯一的问题是他们只加载字符串路径(在xmlfile上)。这是我的代码。 我翻译成这样的方法。 我得到opencv的一个片段错误,它告诉我文件为空

  • 从Android11开始,拥有READ_EXTERNAL_STORAGE权限的应用程序可以使用直接文件路径和本地库读取设备的媒体文件。这个新功能允许您的应用程序更顺利地与第三方媒体库一起工作。 问题是我无法从获得文件路径,那么我们应该如何读取无法访问/检索的文件路径呢?我不知道有没有办法从获取文件路径? 此外,文件说: null null 但是我不需要所有的文件访问权限,我只希望用户从中选择一个视

  • 问题内容: 因此,我正在运行此javascript,并且除背景图片的路径外,其他所有功能都正常运行。它可以在我的本地ASP.NET Dev环境中使用,但是当部署到虚拟目录中的服务器时则无法使用。 这在外部.js文件中,文件夹结构为 然后这就是js文件所在的位置 我已经尝试过使用,但也不起作用;但是,如果使用,它似乎可以在服务器上工作。 基本上,我希望具有与ASP.NET tilda-相同的功能。

  • 问题内容: 因此,我正在运行此javascript,并且除背景图片的路径外,其他所有功能都正常运行。它可以在我的本地ASP.NET Dev环境中工作,但是在部署到虚拟目录中的服务器时不起作用。 这在外部.js文件中,文件夹结构为 然后这就是js文件所在的位置 我已经尝试过使用,但也不起作用;但是,如果使用,它似乎可以在服务器上工作。 基本上,我希望具有与ASP.NET tilda-相同的功能。 更

  • 问题内容: 我正在使用python进行文件操作。 我有一个文件路径为: 当我使用python打开文件时,它说: 但是,该文件存在于驱动器上。 可能是因为窗口包含空格,所以无法正确获取“ SEM 2”。 如何在窗口路径的路径中处理此类空格? 问题答案: 路径中的空格没有问题,因为您没有使用“外壳”来打开文件。这是Windows控制台上的一个会话来证明这一点。你做错了什么