不同apk的activity互相调用
2024-08-25 19:52:20
目标:CHFSAsk.apk调用CHFSAdviser.apk中的AppStart和MainActivity两种activity。
CHFSAsk.apk:去调用的apk, 包名为com.chfs.ask
CHFSAdviser.apk:被调用的apk, 包名为com.chfs.adviser
要调用的activity类型分两种:
A、AppStart manifest.xml中activity声明中 intent-filter字段带有<action android:name="android.intent.action.MAIN" />的activity
B、MainActivity:其他 activity
A类activity调用方法:
1、需要在调用者自身apk此处即为CHFSAsk.apk的manifest.xml中添加需要调用的activity的声明:
<activity android:name=activity的名称>
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity> <!-- "activity的名称"为:"com.chfs.adviser.app.AppStart"或者"com.chfs.adviser.ui.MainActivity"-->
2、CHFSAsk.apk中实现的调用代码:
try{
ComponentName toActivity = new ComponentName(需要启动apk的包名,需要启动的activity); Intent intent = new Intent();
intent.setComponent(toActivity);
intent.setAction("android.intent.action.VIEW"); CurActivity.this.startActivity(intent);
}catch(Exception e){
Log.v("go to apk error","------>"+e.toString());
} <!-- "需要启动apk的包名"为:com.chfs.adviser-->
<!-- "需要启动的activity"为:"com.chfs.adviser.app.AppStart"或者"com.chfs.adviser.ui.MainActivity"-->
对B类activity调用方法:
除了A类两步操作之外,还要进行如下处理
3、还需要在Callee.apk的manifest.xml中添加一些代码,有两种处理方式:
I).最简单,只要在CHFSAdviser.apk的manifest.xml中的MainActivity对应的activity字段中添加android:exported="true"即可。
II).将MainActivity的exported设置为false,然后两个apk协商一个ShareUserId放在各自的manifest.xml中,
CHFSAdviser.apk:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.chfs.adviser"
android:versionCode="1"
android:versionName="1.0" android:sharedUserId="com.wyf"
>
CHFSAsk.apk:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.chfs.ask"
android:versionCode="1"
android:versionName="1.0" android:sharedUserId="com.wyf"
>
这种做法可以实现只有知道ShareUserId的apk才能调用。
最新文章
- IIS7 应用程序池自动回收关闭的解决方案
- 当DevOps撞上物联网
- Hibernate 继承映射
- 第三章 Git使用入门
- Linux学习笔记(12)用户和用户组管理
- 把验证码和生成时间负值给$_SESSION[vCode]生成图像给浏览器
- 闲聊Redshift与日本CG行业的近况
- bzoj3304 [Shoi2005]带限制的最长公共子序列
- bzoj 3037 贪心
- odbc连接数据库
- 深夜,用canvas画一个时钟
- Swift 常用字符串操作
- 分享一些自己写的前端库,并骗骗 star(库都是在实际项目中大量运用过的)
- jqery对于select级联操作
- 如何在ADO中使用数据读取器(DataReader)读取数据
- java反射取private字段
- pycharm设置主题
- java 3大特性
- 如何在数据表中存取图片 - 回复 ";三足乌"; 的问题
- TreeMap升序|降序排列和按照value进行排序