更新记录

1.0.1(2023-04-21)

1.0.1版本:适配Android13

1.0.0(2022-07-20)

安卓文件选择插件第一版


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


文件选择插件示例APK

更新说明

1.0.1版本:适配Android13

引入插件

const L_FilePicker = uni.requireNativePlugin("Luna-FilePicker");

1、权限接口

1.1 判断并授权所有文件的管理权限

getFileManagePermission(res=>{
    console.log(res);
    res={
        "hasPermission":true/false
    }
});

1.2 获取读写手机存储权限

checkPermissions({
    permissionList:["android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"], //格式:["权限1","权限2"],必填
},res=>{
    console.log(res);
    res={
        "code":0,
        "hasPermission":true,
        "message":"权限申请成功"
    }
    res={
        "code":1,
        "hasPermission":false,
        "message":"权限申请失败",
        "deniedPermission":[],//未通过权限列表
    }
    res={
        "code":2,
        "hasPermission":false,
        "message":"权限被拒绝",
        "deniedPermission":[],//未通过权限列表
    }
});

1.3 检查是否具有Android/data文件夹权限并申请授权

Android13无法获取Android/data文件夹权限

checkAndroidDataPermission(res=>{
    console.log(res);
    res={
        "hasPermission":true/false
    }
});

1.4 检查是否具有Android/data、Android/obb子目录权限并申请授权

checkAndroidDataSubPermission({
    path:"" //例如QQ目录:/storage/emulated/0/Android/data/com.tencent.mobileqq/
},res=>{
    console.log(res);
    res={
        "hasPermission":true/false
    }
});

2、文件选择接口

2.1 选择文件

openFilePicker({
    startPath:'', //指定文件选择初始路径,默认值:根目录(/storage/emulated/0),可选
    statusBarColor:'#03A9F4',//设置主题色,目的是与项目主题色保持一致,默认值:#03A9F4,可选
    statusBarTextColor:'white',//设置状态栏文字颜色,值有:white/black,默认值:white ,可选
    onlyReturnPath:true,//是否仅返回被选择文件的路径,默认值:true,可选
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "获取成功",
        "data":"选择的文件信息" 
    }
    //onlyReturnPath = true
    data=["被选择文件1的路径","被选择文件2的路径"]
    //onlyReturnPath = false
    data=["{fileName='com.miui.mishare.connectivity', isFile=false, filePath='/storage/emulated/0/Android/data/com.miui.mishare.connectivity', date='2020-08-10 06:51:04', size='null', childCount=1}","{}"]
})

2.2 分类选择文件

OpenFileCategoryPicker({
    appType:'QQ', //应用类型,值有:QQ/WECHAT,默认值:QQ,可选
    statusBarColor:'#03A9F4',//设置主题色,目的是与项目主题色保持一致,默认值:#03A9F4,可选
    statusBarTextColor:'white',//设置状态栏文字颜色,值有:white/black,默认值:white ,可选
    onlyReturnPath:true,//是否仅返回被选择文件的路径,默认值:true,可选
},res=>{
    console.log(res);
    res={
        "code": 0,
        "message": "获取成功",
        "data":"选择的文件信息" 
    }
    //onlyReturnPath = true
    data=["被选择文件1的路径","被选择文件2的路径"]
    //onlyReturnPath = false
    data=["{}","{}"]
})

3、使用示例

const filePicker = uni.requireNativePlugin("Luna-FilePicker");
filePicker.openFilePicker({
    startPath:'/storage/emulated/0', //指定文件选择初始路径,默认值:根目录(/storage/emulated/0),可选
    statusBarColor:'#03A9F4',//设置主题色,目的是与项目主题色保持一致,默认值:#03A9F4,可选
    statusBarTextColor:'white',//设置状态栏文字颜色,值有:white/black,默认值:white ,可选
    onlyReturnPath:true,//是否仅返回被选择文件的路径,默认值:true,可选
},res=>{
    console.log(res);
})

filePicker.OpenFileCategoryPicker({
    appType:'QQ', //应用类型,值有:QQ/WECHAT,默认值:QQ,可选
    statusBarColor:'#03A9F4',//设置主题色,目的是与项目主题色保持一致,默认值:#03A9F4,可选
    statusBarTextColor:'white',//设置状态栏文字颜色,值有:white/black,默认值:white ,可选
    onlyReturnPath:true,//是否仅返回被选择文件的路径,默认值:true,可选
},res=>{
    console.log(res);
})

隐私、权限声明

1. 本插件需要申请的系统权限列表:

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

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问