场景如下: 我的单个应用程序中有 2 个模块(在 Android Studio 中,文件 -> 新建 -> 新建模块)。
模块 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 不是库模块。
等待您宝贵的回复。
要从任何应用程序启动任何
Activity
,您只需执行以下操作:
Intent intent = new Intent();
intent.setClassName("packageName", "className");
startActivity(intent);
您不需要在编译时引用该
Activity
的源代码。
这将解决您所说的问题。
如果你想删除硬编码,可以按照我找到的方法。 我为此目的使用了 Hilt。