<template>
<view class="content">
<view class="content">
<button type="default" @click="goApp()">检测手机有没有安装此软件</button>
<view>111111111</view>
<view v-for="(item,index) in apkKist" :key="index">
<view>{{item.appName}}</view>
<image :src="item.img"></image>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
apkKist: [],
}
},
onLoad() {
},
methods: {
goApp() {
switch (uni.getSystemInfoSync().platform) {
case 'android':
if (plus.runtime.isApplicationExist({
pname: 'com.tencent.mm',
action: 'weixin://'
})) {
//获取APP的版本名称
console.log("微信已安装");
//软件已经安装并打开该软件
// plus.runtime.openURL('weixin://', function(res) {
// console.log(res)
// })
var BitmapDrawable = 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');
var ImageView = plus.android.importClass("android.widget.ImageView")
var list = plus.android.importClass('java.util.ArrayList');
var info = plus.android.importClass('android.content.pm.PackageInfo');
var man = plus.android.importClass('android.content.pm.PackageManager');
var ApplicationInfo = plus.android.importClass(
'android.content.pm.ApplicationInfo'
);
// console.log(ApplicationInfo)
var MainActivity = plus.android.runtimeMainActivity();
var PackageManager = MainActivity.getPackageManager();
var pinfo = plus.android.invoke(PackageManager, 'getInstalledPackages', 0);
if (pinfo != null) {
undefined;
// 这个是应用列表
this.apkKist = [];
const apk = [];
for (var i = 0; i < pinfo.size(); i++) {
undefined;
//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) {
// undefined
const apkinfo = {
appName: pkginfo.plusGetAttribute('applicationInfo').loadLabel(
PackageManager)
.toString(),
// packageName: pkginfo.plusGetAttribute('packageName'),
// versionName: pkginfo.plusGetAttribute('versionName'),
// versionCode: pkginfo.plusGetAttribute('versionCode'),
appIcon: pkginfo.plusGetAttribute('applicationInfo').loadIcon(
PackageManager),
};
var bimp = null;
try {
//由BitmapDrawable转换成Bitmap
bimp = apkinfo.appIcon.getBitmap();
// console.log(bimp)
apkinfo.img0 = bimp;
} catch (e) {
bimp = Bitmap.createBitmap(apkinfo.appIcon.getIntrinsicWidth(), apkinfo.appIcon
.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
var canvas = new Canvas(bimp);
apkinfo.appIcon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
apkinfo.appIcon.draw(canvas);
}
var baos = new ByteArrayOutputStream();
bimp.compress(Bitmap.CompressFormat.PNG, 100, baos);
baos.flush();
baos.close();
var bitmapBytes = baos.toByteArray();
// console.log(bitmapBytes)
var result = "data:image/png;base64," + Base64.encodeToString(bitmapBytes, Base64
.DEFAULT);
//防止转换成base64之后生成空格
if (result) {
let str = result.replace(/\. +/g, '')
result = str.replace(/[\r\n]/g, '')
}else{
console.log('图片不存在')
}
//由Bitmap转换成base64
apkinfo.img = result;
this.apkKist.push(apkinfo);
uni.setStorageSync('storage_key', this.apkKist);
// console.log(apkKist,"0000");
//由Base64转换成bitmap
var bytes = Base64.decode(apkinfo.img.split(",")[1], Base64.DEFAULT);
// console.log(bytes)
var bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
// console.log(bitmap)
apkinfo.img2 = bitmap
// ImageView.setImageBitmap(bitmap);
console.log(this.apkKist, "0000");
}
}
console.log("555555555")
console.log(this.apkKist);
console.log("444444444444444444444")
}
} else {
console.log("微信未安装");
//弹出提示框
uni.showModal({
title: '提示',
content: '您还没有此APP,去下载',
success: function(res) {
if (res.confirm) {
//打开应用宝,让应用宝下载该软件
plus.runtime.openURL(
'https://a.app.qq.com/o/simple.jsp?pkgname=com.tencent.mm',
function(res) {
console.log(res);
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
break;
case 'ios':
console.log('运行在ios上');
if (plus.runtime.isApplicationExist({
pname: 'com.tencent.mm',
action: 'weixin://'
})) {
//获取APP的版本名称
console.log("微信已安装");
//软件已经安装并打开该软件
plus.runtime.openURL('weixin://', function(res) {
console.log(res)
})
} else {
console.log("微信未安装");
//弹出提示框
uni.showModal({
title: '提示',
content: '您还没有此APP,去下载',
success: function(res) {
if (res.confirm) {
//打开应用宝,让应用宝下载该软件
plus.runtime.openURL(
'https://a.app.qq.com/o/simple.jsp?pkgname=com.tencent.mm',
function(res) {
console.log(res);
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
}
}
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
代码有效,试验成功
主要实现来获取Android系统的监听以及对软件图标,软件标题的获取