更新记录
1.0.1(2025-07-08)
1.新增app搜索接口,可以无需等待加载全部的app直接搜索需要找的app 2.app信息新增应用类型其中0是本地应用,1是系统应用 3.优化vue3组合式代码
1.0.0(2023-04-27)
首次发布
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.1 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
获取手机应用列表插件文档
功能简介
- 支持获取用户安装的应用与全部应用
- 支持获取应用详细信息:
- 应用图标(base64格式)
- 应用大小
- 应用名称
- 应用包名
- 应用版本
- 应用apk路径
- 应用安装时间
- 应用最后更新时间
- 应用类型
注意事项
- 由于需要加载应用图片,加载速度可能较慢(可能需要等待几秒甚至十几秒)
权限说明
- 需要获取
读取应用列表
权限 - 如需根据路径将安装包上传到云服务器,需要获取
所有文件访问权限
,否则无法上传
使用说明
1. 获取插件
const getapplist = uni.requireNativePlugin('Fengci-AppList')
2. 获取应用列表
// 获取用户安装的应用列表
getapplist.userapp()
// 获取全部应用列表
getapplist.allapp()
// 搜索应用,关键字可以是应用名称和包名
getapplist.search(key)
代码示例
<template>
<view>
<input type="text" placeholder="请输入应用名称或者包名" style="height: 50px;" @blur="search">
<button @click="user">获取用户应用</button>
<button @click="all">获取全部应用</button>
<p>由于应用过多,需要加载应用图片,因此加载速度可能有点慢等待几秒都是有可能的</p>
<view>
<view v-for="item in list" @click="up(item.path,item.name)"
style="padding: 5px;display: flex;align-items: center;">
<image :src="item.icon" style="width: 50px;height: 50px;border-radius: 10px;"></image>
<view style="margin-left: 5px;font-size: 12px;">
<p style="font-size: 16px;">{{item.name}} V{{item.version}}</p>
<p>{{item.package}} | {{gsbytes(item.size)}}</p>
<p>安装时间:{{gstime(item.firstDate)}}</p>
<p>更新时间:{{gstime(item.lastDate)}}</p>
<p>类型:{{item.flags==0?'本地应用':'系统应用'}}</p>
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
ref
} from 'vue'
import {
onUnload
} from "@dcloudio/uni-app";
const getapplist = uni.requireNativePlugin('Fengci-AppList')
const list = ref([])
// 获取用户的应用
const user = async () => {
uni.showLoading({
title:"应用列表加载中"
})
list.value = await getapplist.userapp()
uni.hideLoading()
}
// 获取全部的应用
const all = async () => {
uni.showLoading({
title:"应用列表加载中"
})
list.value = await getapplist.allapp()
uni.hideLoading()
}
//搜索应用,关键词可以是app名称或者包名,返回所有的app类型
const search = async (val) => {
list.value = []
list.value = await getapplist.search(val.detail.value)
if (list.value.length == 0) {
uni.showToast({
icon: 'error',
title: '应用列表为空',
duration: 2000
});
}
}
const up = (path, name) => {
// 上传应用到服务器需要该应用获取所有文件访问权限,否则无法上传
uniCloud.uploadFile({
filePath: path,
cloudPath: name + '.apk',
success(res) {
uni.showToast({
title: '上传成功',
duration: 2000
});
},
fail(res) {
console.log(res);
}
});
}
const gstime = (time) => {
time = new Date(time)
var month = time.getMonth() + 1;
var day = time.getDate();
var min = time.getMinutes()
var hour = time.getHours()
return month + "月" + day + "日" + hour + "时" + min + "分";
}
const gsbytes = (limit) => {
var size;
if (limit < 1024) {
size = limit + "B"
} else if (1024 <= limit && limit < 1024 * 1024) {
size = (limit / 1024).toFixed(2) + "KB"
} else if (1024 * 1024 <= limit && limit < 1024 * 1024 * 1024) {
size = (limit / (1024 * 1024)).toFixed(2) + "MB"
} else if (1024 * 1024 * 1024 <= limit) {
size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB"
}
return size;
}
const copy = (url) => {
uni.setClipboardData({
data: url
});
}
</script>
返回参数
参数名 | 类型 | 备注 |
---|---|---|
icon | String | 应用图标(base64格式) |
name | String | 应用名称 |
version | String | 应用版本 |
package | String | 应用包名 |
firstDate | long | 安装时间(返回时间戳) |
lastDate | long | 更新时间(返回时间戳) |
size | long | 应用大小 |
path | String | 安装包路径(file://格式) |
flags | int | 应用类型(0是用户应用,1是系统应用) |