移除Android应用启动器图标并通过另一应用按钮启动该应用的实现疑问
调整步骤说明
除了修改Manifest之外,还需要对记忆小游戏的页面逻辑进行代码修改,完整操作如下:
1. 目标隐藏应用(com.snsui.appHider)调整(仅需修改Manifest)
直接删除目标应用Manifest中SnsUIPasswordKeypadActivity节点下的LAUNCHER类别声明即可移除启动器图标:
<!-- 删除这行即可 --> <category android:name="android.intent.category.LAUNCHER" />
无需删除同节点下的MAIN action,避免应用内部跳转出现异常,该Activity默认导出,第三方应用可正常调用启动
2. 记忆小游戏(com.mobilepearls.memory)调整(包含Manifest外的代码修改)
2.1 可选Manifest调整(仅Android 11+需要)
如果要适配Android 11(API 30)及以上系统,需要在记忆小游戏的Manifest根节点下添加包可见性声明,否则无法查询到目标应用:
<queries> <package android:name="com.snsui.appHider" /> </queries>
2.2 核心代码调整(Manifest外的必要修改)
找到记忆小游戏的AboutActivity对应代码,添加点击触发逻辑:
- 可以在关于页的布局中新增一个隐藏/公开的触发按钮,也可以监听现有关于页元素的点击事件(比如连续点击版本号N次触发)
- 在触发逻辑中添加启动目标应用的代码:
// 点击事件触发时执行 Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.snsui.appHider"); if (launchIntent != null) { startActivity(launchIntent); } else { Toast.makeText(this, "目标应用未安装", Toast.LENGTH_SHORT).show(); }
可添加try-catch包裹startActivity调用,避免出现未捕获的跳转异常
内容的提问来源于stack exchange,提问作者Steve Jines
相关产品推荐
相关产品推荐

