zzhi_bo
zzhi_bo
  • 发布:2021-12-10 15:30
  • 更新:2022-07-18 10:14
  • 阅读:1813

uniapp 获取已安装的应用,以及图标转换

分类:uni-app

主要使用Native.js引用安卓的一些类,然后根据安卓原生来获取。

包名、版本、应用名都能正常获取,但是图标获取出来的并不是base64,所以我们要转为base64的路径,这里有一个坑(使用image标签引用转换出来的base64是不行的,要使用img标签), 转换的时间可能较慢,多等待一下。

plus.android.importClass('android.graphics.drawable.BitmapDrawable');
var BitmapFactory = plus.android.importClass("android.graphics.BitmapFactory");
var Base64 = plus.android.importClass("android.util.Base64");
var Bitmap = plus.android.importClass('android.graphics.Bitmap');
var ByteArrayOutputStream = plus.android.importClass("java.io.ByteArrayOutputStream");
var Canvas = plus.android.importClass('android.graphics.Canvas');
plus.android.importClass('java.util.ArrayList');
plus.android.importClass('android.content.pm.PackageInfo');
plus.android.importClass('android.content.pm.PackageManager');
var ApplicationInfo = plus.android.importClass('android.content.pm.ApplicationInfo');
var MainActivity = plus.android.runtimeMainActivity();
var PackageManager = MainActivity.getPackageManager();
if (pinfo != null) {
for (var i = 0; i < pinfo.size(); i++) {
//PackageInfo{4b45699f9d com.tencent.mobileqq}
var pkginfo = pinfo.get(i);
var issysapk = ((pkginfo.plusGetAttribute("applicationInfo").plusGetAttribute("flags") & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false
if (issysapk == false) {
const apkinfo = {
appName: pkginfo.plusGetAttribute("applicationInfo").loadLabel(PackageManager).toString(),
packageName: pkginfo.plusGetAttribute("packageName"),
versionName: pkginfo.plusGetAttribute("versionName"),
versionCode: pkginfo.plusGetAttribute("versionCode"),
appIco:pkginfo.plusGetAttribute("applicationInfo").loadIcon(PackageManager)
};
var bimp=null;
try{
bimp=apkinfo.appIco.getBitmap();
}catch(e){
bimp = Bitmap.createBitmap(apkinfo.appIco.getIntrinsicWidth(), apkinfo.appIco.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
var canvas = new Canvas(bimp);
apkinfo.appIco.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
apkinfo.appIco.draw(canvas);
}
var baos = new ByteArrayOutputStream();
bimp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush();
baos.close();
var bitmapBytes = baos.toByteArray();
var result = "data:image/jpeg;base64,"+Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
apkinfo.appIcon=result;
apkKist.push(apkinfo);
};
};
};

1 关注 分享
fsdfsdf

要回复文章请先登录注册

7***@qq.com

7***@qq.com

看着不错,苹果的系统应该是另外一套内容
2022-07-18 10:14