You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否在一个Android Studio项目中包含多个应用程序并实现应用间跳转?

在Android Studio项目中创建多应用及跨应用跳转指南

嘿,这两个问题都是Android开发里挺实用的场景,我来给你详细解答:

一、能否在一个Android Studio项目中创建多个应用程序?

绝对可以!Android Studio支持在单个项目中创建多个应用模块——你只需要把每个模块的类型设置为com.android.application(而不是默认的库模块com.android.library)就行。

具体操作步骤很简单:

  • 右键点击项目根目录 → NewModule
  • 在弹窗里选择适合的模块类型(比如「Phone & Tablet Module」),跟着向导走,记得在模块类型选项里选「Application」而非「Library」
  • 重复这个流程就能添加多个独立的应用模块,每个模块都有自己的AndroidManifest.xml、代码、资源,打包后会生成各自的APK文件。

二、如何在这些应用程序之间跳转?

你给出的示例代码有点小问题,Intent不能直接传“第一个项目”“第二个项目”这种模糊参数,跨应用跳转需要明确指定目标应用的组件信息,常用的有两种方式:

方式1:显式Intent(明确指定组件)

如果你清楚目标应用的包名和要跳转的Activity全类名,可以直接构建Intent:

// 创建Intent,指定目标应用的包名和Activity类
Intent intent = new Intent();
intent.setComponent(new ComponentName(
    "com.your.second.app.package",  // 替换成第二个应用的实际包名(和它的AndroidManifest里的package一致)
    "com.your.second.app.package.TargetActivity"  // 替换成要跳转的Activity的全类名
));

// 先检查设备上是否安装了目标应用,避免崩溃
if (getPackageManager().resolveActivity(intent, 0) != null) {
    startActivity(intent);
} else {
    Toast.makeText(this, "目标应用未安装哦", Toast.LENGTH_SHORT).show();
}

方式2:隐式Intent(通过Intent Filter匹配)

如果不想硬编码包名和类名,可以让目标应用的Activity配置Intent Filter。比如在目标应用的AndroidManifest.xml里给对应的Activity添加:

<activity
    android:name=".TargetActivity"
    android:exported="true"> <!-- Android 12+必须设置为true,否则其他应用无法启动它 -->
    <intent-filter>
        <action android:name="com.your.second.app.action.OPEN_TARGET" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

然后在第一个应用里,就可以通过Action来启动这个Activity:

Intent intent = new Intent("com.your.second.app.action.OPEN_TARGET");
// 可选:如果怕有多个应用匹配这个Action,可以加上包名过滤
intent.setPackage("com.your.second.app.package");

if (getPackageManager().resolveActivity(intent, 0) != null) {
    startActivity(intent);
}

几个关键注意点

  • Android 12+权限要求:目标Activity必须设置android:exported="true",否则会启动失败
  • 前置检查:跳转前一定要判断目标应用是否存在,不然会抛出ActivityNotFoundException
  • 开发阶段测试:同一项目下的多个应用模块,你可以在Android Studio的运行配置里切换不同模块来运行,测试跳转功能;打包后需要把所有相关APK都安装到设备上才能正常跳转

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

火山引擎 最新活动