HarmonyOS鸿蒙Next应用开发-如何打开第三方应用
HarmonyOS鸿蒙Next应用开发-如何打开第三方应用
参数说明:
Context:this
appPkg:app的apk包名
AbilityName:app启动类路径
- 判断设备上是否安装该应用
boolean isAppExist(Context context, String appPkg) {
try {
IBundleManager manager = context.getBundleManager();
return manager.isApplicationEnabled(appPkg);
} catch (IllegalArgumentException e) {
return false;
}
}
- 如果已经下载则打开app
public void launchAppDetail(String appPkg, String AbilityName){
Intent intent = new Intent();
Set<String> entities = new HashSet<>();
entities.add("android.intent.category.LAUNCHER");
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")
.withBundleName(appPkg)
.withAbilityName(AbilityName)
.withAction("android.intent.action.MAIN")
.withFlags(Intent.FLAG_NOT_OHOS_COMPONENT)
.withEntities(entities)
.build();
intent.setOperation(operation);
startAbility(intent);
}
- 如果还未安装则跳转到应用商场
public void AppShop(String appPkg){
HiLog.info(log,"launchAppDetail");
if(appPkg.isEmpty())return;
Uri uri = Uri.parse("market://details?id="+appPkg);
HiLog.info(log,"uri:"+uri);
Intent intent = new Intent();
intent.setUri(uri).addFlags(Intent.FLAG_ABILITY_NEW_MISSION);
startAbility(intent,0);
}
- 如果未上架应用商场,跳转到网站上下载
public void AppWeb(String url){
Intent intent = new Intent();
Operation operation = new Intent.OperationBuilder()
.withUri(Uri.parse(url))
.build();
intent.setOperation(operation);
startAbility(intent);
}
下面是一些安卓常用的apk包名,紧供参考:
// 微信 包名 com.tencent.mm //启动类名:com.tencent.mm.ui.LauncherUI
// QQ 包名 com.tencent.mobileqq //启动类名:com.tencent.mobileqq.activity.HomeActivity
// 支付宝 包名:com.eg.android.AlipayGphone //启动类名com.eg.android.AlipayGphone.FastStartActivity
// 钉钉 包名:com.alibaba.android.rimet //启动类名:com.alibaba.android.rimet.biz.home.activity.HomeActivity
// QQ空间 包名:com.qzone
// QQ手机管家 包名:com.tencent.qqpimsecure
// 微博 包名:com.sina.weibo //启动类名:com.sina.weibo.EditActivity
// 天天动听 包名:com.sds.android.ttpod
// 中华万年历 包名:cn.etouch.ecalendar
// 百度地图 包名:com.baidu.BaiduMap
// 高德地图 包名:com.autonavi.minimap //启动类名:com.autonavi.map.activity.SplashActivity
// 信息 包名:com.android.mms
// 设置 包名:com.android.settings
// 浏览器 包名:com.android.browser
// 计算器 包名:com.android.calculator2
// 时钟 包名:com.android.deskclock
// 图库 包名:com.android.gallery3d
// 相机 包名:com.android.hwcamera
// 音乐 包名:com.android.mediacenter
// 收音机 包名:com.huawei.android.FMRadio
// 录音机 包名:com.android.soundrecorder
// UC浏览器 包名:com.UCMobile
// 美图秀秀 包名:com.mt.mtxx.mtxx
// PPTV 包名:com.pplive.androidphone
// 书旗免费小说 包名:com.shuqi.controller
// 360手机助手 包名:com.qihoo.appstore
// 360卫士 包名:com.qihoo360.mobilesafe
// 360清理大师 包名:com.qihoo.cleandroid_cn
// 百度手机助手 包名:com.baidu.appsearch
// 豌豆荚 包名:com.wandoujia.phoenix2
// 小米应用商店 包名:com.xiaomi.market
// 华为应用商店 包名:com.huawei.appmarket
// 安智应用商店 包名:com.hiapk.marketpho
// R.E.管理器 包名:com.speedsoftware.rootexplorer
// PP手机助手 包名:com.pp.assistant
// OPPO应用商店 包名:com.oppo.market
// 联想应用商店 包名:com.lenovo.leos.appstore
// 应用宝 包名:com.tencent.android.qqdownloader
apk包名
原文链接:https://blog.csdn.net/qq_38922435/article/details/113810563
蛟龙腾飞整理与练习。
更多关于HarmonyOS鸿蒙Next应用开发-如何打开第三方应用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
上面的写法在api6上报错说 没有 FLAG_ACTIVITY_NEW_TASK 真实写法如下 亲测可用
姓名: 张三
年龄: 30
职业: 软件工程师
项目经验
-
项目一:
- 负责前端页面开发
- 使用React框架
-
项目二:
- 负责后端服务开发
- 使用Node.js和Express框架
跳转到网站那一段,实测app会闪退
我这正常
你是不是没申请网络权限
你用的是Java UI框架开发的吧?
是的
现在有明确的规定,不让应用之间互拉的吧。
如何调用第三方app打开某一特定名称文件
学习
在设置,应用服务里,可以看到所有APP的信息吧。
如何列出系统中所有已安装的app的信息
大家讨论的还是挺热烈的。
我用的是JS ui框架开发的,不知道 是不是这个原因导致闪退的
在HarmonyOS鸿蒙Next中,打开第三方应用可以通过Intent
实现。首先,确保目标应用已安装。然后,使用ohos.app.Context
的startAbility
方法,传入包含目标应用包名和类名的Intent
对象。例如:
Intent intent = new Intent();
Operation operation = new Intent.OperationBuilder()
.withBundleName("com.example.app") // 目标应用包名
.withAbilityName("com.example.app.MainAbility") // 目标应用的主Ability
.build();
intent.setOperation(operation);
startAbility(intent);
确保在config.json
中声明了相关权限。