You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从原生Android应用(自定义安卓启动器)中启动Progressive Web App(PWA)

Android 原生启动器启动PWA的实现方案

PWA在Android系统中主要以两种形式存在,对应不同的启动逻辑:

1. 打包为APK的TWA形式PWA

这类PWA是通过Trusted Web Activity技术打包成标准安卓安装包的,和普通原生应用的启动逻辑完全一致,直接使用你已知的包名启动方式即可:

// 替换为对应PWA的APK包名
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.pwa.twa");
if (launchIntent != null) {
    startActivity(launchIntent);
}

2. 浏览器添加到桌面的快捷方式形式PWA

这类PWA没有独立的应用包,由Chromium内核的浏览器(Chrome、Edge等)托管运行,需要构造指向PWA起始URL的专用Intent启动:

通用启动方案

import android.net.Uri;
import android.content.ActivityNotFoundException;

// 替换为对应PWA的实际启动URL
Intent pwaIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://your-pwa-start-url.com"));
// 要求以独立PWA窗口启动,而非普通浏览器标签
pwaIntent.putExtra("org.chromium.chrome.extra.LAUNCH_AS_PWA", true);
// 启动器启动第三方应用必须添加该标记
pwaIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

if (pwaIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(pwaIntent);
} else {
    // 无支持PWA的浏览器时可降级为普通网页打开
    pwaIntent.removeExtra("org.chromium.chrome.extra.LAUNCH_AS_PWA");
    startActivity(pwaIntent);
}

指定Chrome启动的方案

如果需要固定用Chrome打开PWA,可以指定包名:

Intent pwaIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://your-pwa-start-url.com"));
pwaIntent.setPackage("com.android.chrome");
pwaIntent.putExtra("org.chromium.chrome.extra.LAUNCH_AS_PWA", true);
pwaIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

try {
    startActivity(pwaIntent);
} catch (ActivityNotFoundException e) {
    // 未安装Chrome时移除包名限制,走通用启动逻辑
    pwaIntent.setPackage(null);
    startActivity(pwaIntent);
}

启动器枚举所有已添加PWA的补充说明

如果你的自定义启动器需要先获取所有系统中已存在的PWA入口,可以申请QUERY_ALL_PACKAGES权限(Android 13及以上需要动态申请),之后通过PackageManager查询所有带有CATEGORY_LAUNCHER、且Intent过滤器匹配PWA URL规则的组件,即可拿到所有PWA的启动信息。


内容的提问来源于stack exchange,提问作者vmayorow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:36:01