首页 > 代码库 > 不同apk的activity互相调用
不同apk的activity互相调用
目标: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才能调用。
不同apk的activity互相调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。