Android获取手机系统软件图标,名称等

<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系统的监听以及对软件图标,软件标题的获取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值