已经有一个 Android工程 A 。 现在的工程 B 中 需要集成A工程作为一个模块。
怎么样实现?
首先我想 B工程中能否直接 包含 A的apk文件, 发现不可行。
然后 想到 用jar包的方式,
1将A工程 的src文件夹下面所有的内容 导出 jar包。
2保留 reg下的 图片,xml 等资源文件, 还有 AndroidManifest.xml 的内容。
3将A工程的jiar包 导入到B工程中, reg中的文件放到相应的文件夹下面。 AndroidManifest里面的Activity复制到B的对应文件。
这个时候存在两个工程 包名 不相同的情况, 容易出错, 最好两个工程保持一致。
这样完成了 B 工程 对 A工程的集成。
另外: 查了一些相关的信息。
如果 A B 两个 APK 独立安装到 手机上。 AB之间怎么交互 可以通过Intent实现。
如下 是在 B 工程中 启动 A工程中指定的 Activity 的方法。
Intent toAnother = new Intent("android.intent.action.MAIN");
toAnother.addCategory("android.intent.category.LAUNCHER");
toAnother.addCategory("android.com.androidjar");
// “android.com.androidjar” 为A工程中Activity属性里配置的 gategory name
List<ResolveInfo> toActivityList=getPackageManager()
.queryIntentActivities(toAnother, 0);
ResolveInfo anotherProgectActivity = toActivityList.get(0); // 如果找不到对应的的ActivityName 这里会数组越界
toAnother = new Intent().setClassName(anotherProgectActivity.activityInfo.packageName,
anotherProgectActivity.activityInfo.name);
startActivity(toAnother);
完毕 !
另外 还可以 通过 Intent 的 search 找到 指定 的 Activiy
- Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
- intent.putExtra(SearchManager.QUERY,"searchString")
//searchString 为要启动的 Activity Name
3. startActivity(intent);