更新记录

1.0.0(2026-09-15)

  • 初始版本
  • 支持 Android 平台
  • 获取当前默认桌面应用
  • 切换默认桌面应用(三级降级策略适配 MIUI/EMUI)

平台兼容性

uni-app(4.27)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS 鸿蒙
1.0.0 1.0.0 × × 1.0.0 1.0.0 6.0 1.0.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.27)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 6.0 × × ×

zy-launcher 桌面Launcher工具

桌面 Launcher UTS 插件,支持 Android 平台,提供获取默认桌面、切换默认桌面、启动过渡页等功能。

功能特性

  • ✅ 获取当前默认桌面应用
  • ✅ 列出本机所有可用桌面应用
  • ✅ 切换默认桌面应用(三级降级策略)

支持平台

平台 最低版本
Android Android 6.0 (API 23)

安装

在 HBuilderX 插件市场搜索 zy-launcher 安装,或手动将插件目录复制到项目的 uni_modules/ 下。

权限配置

Android

插件已自动配置 AndroidManifest.xml,包含以下权限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

API 说明

1. getLauncher - 获取当前默认桌面

获取当前默认桌面应用信息,并列出本机所有可用桌面应用。

import { getLauncher } from '@/uni_modules/zy-launcher'

getLauncher({
  success: (res) => {
    console.log('默认桌面包名:', res.packageName)
    console.log('默认桌面类名:', res.className)
    console.log('本机桌面应用数量:', res.count)
    console.log('桌面应用列表:', res.homes)
  },
  fail: (err) => {
    console.error('获取失败:', err.errMsg)
  },
  complete: (res) => {
    console.log('操作完成')
  }
})

success 回调参数:

字段 类型 说明
success boolean 是否成功获取默认桌面
packageName string 默认桌面包名
className string 默认桌面类名
homes Array 本机可用桌面应用列表
count number 本机可用桌面应用数量
message string 失败时的原因

桌面应用信息字段:

字段 类型 说明
packageName string 应用包名
className string 应用类名

2. setLauncher - 切换默认桌面

打开系统设置页切换默认桌面应用,采用三级降级策略适配 MIUI/EMUI 等定制 ROM。

import { setLauncher } from '@/uni_modules/zy-launcher'

setLauncher({
  success: (res) => {
    console.log('切换入口:', res.action)
    console.log('提示信息:', res.message)
  },
  fail: (err) => {
    console.error('切换失败:', err.errMsg)
  },
  complete: (res) => {
    console.log('操作完成')
  }
})

success 回调参数:

字段 类型 说明
success boolean 是否成功打开切换入口
action string 实际走的入口:homeSettings / defaultAppsSettings / chooser / none
count number 本机可用桌面应用数量
message string 提示文案

action 说明:

action 说明
homeSettings 打开系统「默认桌面」设置页
defaultAppsSettings 打开系统「默认应用」设置页
chooser 弹出系统选择弹窗
none 无法打开切换入口

3. launchHomeScreen - 启动 LauncherActivity

启动桌面过渡页,用于开机自启场景。

import { launchHomeScreen } from '@/uni_modules/zy-launcher'

launchHomeScreen({
  success: (res) => {
    console.log('启动成功:', res.message)
  },
  fail: (err) => {
    console.error('启动失败:', err.errMsg)
  },
  complete: (res) => {
    console.log('操作完成')
  }
})

success 回调参数:

字段 类型 说明
success boolean 是否成功启动
message string 提示信息

完整示例

<template>
  <view class="container">
    <button @click="handleGetLauncher">获取当前默认桌面</button>
    <button @click="handleSetLauncher">切换默认桌面</button>
    <button @click="handleLaunchHomeScreen">启动过渡页</button>

    <view class="info-card" v-if="launcher">
      <text>包名: {{ launcher.packageName }}</text>
      <text>类名: {{ launcher.className }}</text>
    </view>

    <view class="home-list">
      <view v-for="(item, index) in homes" :key="index" class="home-item">
        <text>{{ index + 1 }}. {{ item.packageName }}</text>
      </view>
    </view>
  </view>
</template>

<script>
import { getLauncher, setLauncher, launchHomeScreen } from '@/uni_modules/zy-launcher'

export default {
  data() {
    return {
      launcher: null,
      homes: []
    }
  },
  methods: {
    handleGetLauncher() {
      getLauncher({
        success: (res) => {
          if (res.success) {
            this.launcher = {
              packageName: res.packageName,
              className: res.className
            }
            this.homes = res.homes
            uni.showToast({ title: '获取成功' })
          } else {
            uni.showToast({ title: res.message, icon: 'none' })
          }
        },
        fail: (err) => {
          uni.showToast({ title: err.errMsg, icon: 'none' })
        }
      })
    },

    handleSetLauncher() {
      setLauncher({
        success: (res) => {
          if (res.success) {
            uni.showModal({
              title: '提示',
              content: res.message,
              showCancel: false
            })
          } else {
            uni.showToast({ title: res.message, icon: 'none' })
          }
        },
        fail: (err) => {
          uni.showToast({ title: err.errMsg, icon: 'none' })
        }
      })
    },

    handleLaunchHomeScreen() {
      launchHomeScreen({
        success: (res) => {
          uni.showToast({ title: '启动成功' })
        },
        fail: (err) => {
          uni.showToast({ title: err.errMsg, icon: 'none' })
        }
      })
    }
  }
}
</script>

<style>
.container {
  padding: 20rpx;
}

button {
  margin: 20rpx 0;
}

.info-card {
  margin-top: 40rpx;
  padding: 20rpx;
  background: #f5f5f5;
  border-radius: 10rpx;
}

.home-list {
  margin-top: 40rpx;
}

.home-item {
  padding: 20rpx;
  border-bottom: 1rpx solid #eee;
}
</style>

错误码

错误码 说明
1001 获取默认桌面失败
1002 切换默认桌面失败
1003 启动 LauncherActivity 失败
1004 未找到可用的桌面应用
1005 本机只安装了1个桌面应用,无需选择

注意事项

  1. MIUI/EMUI 兼容:插件采用三级降级策略,优先使用系统「默认桌面」设置页,其次使用「默认应用」设置页,最后使用系统 chooser 弹窗兜底
  2. Android 11+ 兼容:通过 <queries> 声明包可见性,确保在 Android 11+ 上仍能查询到所有桌面应用
  3. LauncherActivity:配合 RECEIVE_BOOT_COMPLETED 权限,可用于开机自启动场景
  4. 全屏过渡页:LauncherActivity 是全屏沉浸式显示,延迟 1 秒后自动启动主应用

更新日志

1.0.0

  • 初始版本
  • 支持 Android 平台
  • 获取当前默认桌面应用
  • 切换默认桌面应用

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.QUERY_ALL_PACKAGES,android.permission.RECEIVE_BOOT_COMPLETED

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。