uniapp创建桌面快捷方式

实现思路是使用plus对象、HTML5+可能存在兼容性!

uni-app App 端内置 HTML5+ 引擎、so直接在uniapp使用plus对象即可 uni-app使用plus注意事项

先上图、原始应用程序图标(左侧)快捷方式图标(右侧)
在这里插入图片描述

代码示例、创建快捷方式

如果要创建桌面快捷方式,需添加以下权限:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>"
<template>
	<view class="su-section">
		<button class="su-button" @click="createClock">
			<text class="addbtn-text">创建打卡快捷</text>
		</button>
	</view>
</template>

<script>
export default {
	data() {
		return {};
	},
	methods: {
		//点击创建快捷方式
		createClock() {
			const params = {
				name: '打卡',
				icon: '/static/logo512.png',
				extra: {
					path: '/pages/app/punch/clock', // 应用地址
					title: '打卡快捷方式'
				},
				toast: '',
				force: false
			};
			this.handleHasShortcut(params);
		},
		/* 查询是否存在快捷方式 */
		handleHasShortcut(options) {
			plus.navigator.hasShortcut(options, (e) => {
				const result = e.result;
				if (result === 'existing') {
					uni.$as.toast(options?.name + ' 快捷方式已存在');
					return false;
				}
				if (result === 'unsupported') {
					uni.$as.toast('该设备不支持创建桌面快捷方式');
					return false;
				}
				// 可通过eresult获取结果:
				// "existing":快捷方式已存在;
				// "none":快捷方式不存在(支持创建);
				// "unsupported":不支持创建桌面快捷方式;
				// "unknown":不确定快捷方式是否存在。
				console.log('查询结果-hasShortcut:' + e.result);
				this.handleCreateShortcu(options);
			});
		},
		/* 创建快捷方式 */
		handleCreateShortcu(options) {
			plus.navigator.createShortcut(
				options,
				function (e) {
					console.log('查询结果-success:' + e.result);
				},
				function (e) {
					console.log('查询结果-error:' + e.result);
				}
			);
		}
	}
};
</script>

创建成功后、在App.vue里面接收即可
在这里插入图片描述

代码示例

/**
	 * 初始化
	 * @param {void} 
	 */
	initShortcut(that) {
		if (!uni.$as.utils.isApp()) {
			return false;
		}
		const main = plus.android.runtimeMainActivity();
		const Intent = plus.android.importClass('android.content.Intent');
		const intent = main.getIntent();
		const path = intent.getStringExtra('path');

		if (path === null) {
			return;
		}
		that.$nextTick(() => {
			uni.navigateTo({
				url: path,
				success() {
					// 快捷方式跳转成功的回调逻辑
					console.log('快捷方式跳转成功');
				},
				fail(err) {
					// 快捷方式跳转失败的回调逻辑
					console.log('快捷方式跳转失败', err);
				}
			});
		});
		intent.removeExtra('path');
	},

这样就大工搞成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端壹栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值