s***@qq.com
s***@qq.com
  • 发布:2023-03-25 12:41
  • 更新:2023-03-25 13:09
  • 阅读:249

android打包后不能访问手机存储卡的普通文件

分类:uni-app

我有一个小项目,要求读取android手机存储卡里面的文件,不用考虑安全问题。
已经在manifest.json中配置了以下权限:

android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

我使用的方法是通过js来调用android的原生api,大概代码如下:

listDir(javaFile) {  
    this.curPath = plus.android.invoke(javaFile, 'getAbsolutePath')  
    const files = plus.android.invoke(javaFile, 'listFiles')  
    if (files && files.length) {  
        this.curFiles = files.map(f => ({  
            name: plus.android.invoke(f, 'getName'),  
            type: plus.android.invoke(f, 'isDirectory') ? 'dir' : 'file'  
        }))  
    } else {  
        this.curFiles = []  
    }  
}

也加入了授权方法:

openPermission() {  
    const permissions = ['android.permission.READ_EXTERNAL_STORAGE',   
        'android.permission.WRITE_EXTERNAL_STORAGE']  
    plus.android.requestPermissions(permissions, e => {  
        console.log('permission done', JSON.stringify(e))  
        if (e.granted.length == 2) {  
            plus.nativeUI.toast('授权成功')  
            this.reloadDir()  
        }  
    })  
}

在使用标准基座运行时,一切都正常,可以访问目录,也可以访问目录下面的文件,还可以创建目录和写文件。
但是,当使用自定义基座运行,或者打包后,就只能访问目录,和访问一些.jpg之类的媒体文件,不能访问其它普通文件,如txt,pdf文件,也不能创建目录,也不能写文件。
想请教一下各位大神,是否是uniapp在这方便做了限制,还是我的方法不对。
有没有办法做到,在打包之后,可以读取任意文件,并且可以写文件?

附件是显示手机存储卡目录和文件列表的简单功能,可以用标准基座和自定义基座运行来比较效果的不同。

2023-03-25 12:41 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

  • s***@qq.com (作者)

    谢谢了。原来操作文件变得这么麻烦了,看来得调整一下需求才行。

    另外,也建议官方处理一下标准基座的权限,不然容易被误导。

    2023-03-26 11:14

要回复问题请先登录注册