目标: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互相调用的更多相关文章

  1. Android app启动activity并调用onCreate()方法时都默默地干了什么?

    Android app启动activity并调用onCreate() 方法时都默默地干了什么?   在AndroidManifest.xml文件中的<intent-filter>元素中有这 ...

  2. 67、activity中调用fragment内部自定义的方法

    fragment: /** * author: Created by zzl on 15/11/19. */ @SuppressLint("validFragment") publ ...

  3. android调用其他apk的activity

    <img src="https://img-blog.csdn.net/20160322114625025" alt="" />启动另一个apk的工 ...

  4. Unity3D研究院之打开Activity与调用JAVA代码传递参数

    原地址:http://www.xuanyusong.com/archives/667    Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发 ...

  5. 启动其他APK的Activity方法 (转至http://www.cnblogs.com/lijunamneg/archive/2013/02/26/2934060.html)

    有两个app,分别叫做App1和App2.App1包含两个Activity,分别叫做App1_A和App1_B.其中App1_A是入口Activity.也就是App1_A设置intent-filter ...

  6. 多个Activity相互调用和Intent

    MainActivity.java和OtherActivity.java的相互调用 首先MainActivity.java是Android程序自带的,新建一个类OtherActiviy extends ...

  7. 在非activity类调用startActivityForResult

    对于这个问题,今天折腾了一下午,不是说我不懂得怎么调用,而是我用了看似正确的调用方式,而其实这是一个坑. 我用了下面这种方式: ((Activity) mContext).startActivityF ...

  8. apk程序查找方法调用

    有android killer,现在ida对android的支持等一些方便工具,此篇(关于搜索和修改代码)废弃. 没有好的调试工具下 常用插代码(如果怕影响寄存器值,可以将.locals xxx改多几 ...

  9. 在设置了android:parentActivityName后,点击子Activity返回键,父Activity总会调用OnDestroy()的解决方式

    近期查了非常久这个事情.分享给大家, 原理非常easy,一个Activity在manifet里声明了android:parentActivityName:这时候通过Activity左上角的返回butt ...

随机推荐

  1. Django学习笔记之Ajax入门

    AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...

  2. 关于JS解析编历JSON数组(含多维数组)

    第一部分:      ].xing) 第二部分:                         }    解释:    countryObj 为value对象的一个属性明    value[coun ...

  3. codeforces 703B

    题意:有n座城市,其中k座是省会城市,每个城市有对应的点权,城市1-2-3-...-n-1有一条路相连,省会城市与其他所有的城市相连,且每两个城市间最多有一条路,每条路的边权为路连接的两座城市的点权乘 ...

  4. iOS开发进阶 - 使用Carthage管理iOS第三方库

    移动端访问不佳,请访问我的个人博客 最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来 ...

  5. powerdesigner 左边的列表框弄不见了怎么弄出来

    快捷键  Alt + 0(数字零)  或者点击下面图片的 红色标识位置.就出来了.

  6. 《大型网站系统与JAVA中间件实践》读书笔记-消息中间件

    消息中间件 1.消息中间件的价值 1.1 透过示例看消息中间件对应用的解耦 1.1.1.通过服务调用让其他系统感知事件发生的方式 假设我们要做一个用户登录系统,其中需要支持的一个功能是,用户登录成功 ...

  7. AtCoder Regular Contest 102

    AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...

  8. Effective C++ 条款12:复制对象时勿忘其每一个成分

    void logCall(const std::string& funcName); class Customer { public: ... Customer (const Customer ...

  9. mysql简单的增删改查

    增加 MYSQL>insert into class (stu,name,age) values (1,'zhangsan',23);(回车) 另外,如果输入的是中文的话,在windows下可能 ...

  10. mapreduce&GFS&bigtable learning

    之前在学习udf的时候接触到了mapreduce,感觉很酷,于是学习了一下,看了mapreduce和GFS的论文,但是没有总结,只是看了一遍 准备利用在学校的时间,学习一下bigtable,然后再认真 ...