Android中如何调用另一个模块中的Activity(属于一个模块)?

问题描述 投票:0回答:2

场景如下: 我的单个应用程序中有 2 个模块(在 Android Studio 中,文件 -> 新建 -> 新建模块)。

  1. 模块A
  2. 模块B

模块 A(它不是一个库项目。 它的 gradle 以 apply plugin: 'com.android.application' 开头)。

模块 B(也不是库模块)。

在模块 B 内,我需要调用属于模块 A 的 Activity(例如 MainActivity)。

模块A清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.abc.emergencycontacts">
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true">
<activity android:name=".EmergencyContactsActivity" android:theme="@style/AppTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

    </application>

</manifest>

模块 B 清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.abc.secondaryactivity">

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true">

        <activity android:name=".BaseAppActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
    </application>

</manifest>

如何实现?

请注意,我无法在模块 B 中添加模块 A 的依赖项,因为模块 A 不是库模块。

等待您宝贵的回复。

android android-studio android-intent android-activity module
2个回答
2
投票

要从任何应用程序启动任何

Activity
,您只需执行以下操作:

Intent intent = new Intent();
intent.setClassName("packageName", "className");
startActivity(intent);

您不需要在编译时引用该

Activity
的源代码。

这将解决您所说的问题。


0
投票

如果你想删除硬编码,可以按照我找到的方法。 我为此目的使用了 Hilt。

© www.soinside.com 2019 - 2024. All rights reserved.