目标: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. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  2. JSP与Servlet之前台页面自动回复之实现

    [JSP与Servlet之前台页面自动回复之实现] 该内容 来自于imooc的一个视屏教程.http://www.imooc.com/video/4562 就是当点击 发送 的时候把这个对话框内容添加 ...

  3. python之模块导入和重载

    模块导入和重载 模块导入通过import语句实现,但是在同一次会话中只运行一次. 若想要再次运行文件,调用imp标准库中的reload函数: >>> from imp import ...

  4. anacoda的spyder在调用matplotlib的时候无法显示动画效果【学习笔记】

    ipython console的默认设置将图像结果显示在终端,但是这样显示存在的问题是无法显示动画效果,因此需要将动画效果显示到单独的窗口,按照下面的截图即可显示. 方法一.按照如下截图显示设置,重启 ...

  5. 数据结构(二) 树Tree

    五.树 树的定义   树的逻辑表示:树形表示法.文氏图表示法.凹入表示法.括号表示法.         结点:表示树中的元素,包括数据项及若干指向其子树的分支. 结点的度:结点拥有的子树树:树的度:一 ...

  6. 逆序对算法(reverse pair)

    逆序对(reverse-pair) 思想和归并排序的思想一样,时间复杂度是O(nlgn). 就是在统计逆序对个数的表达式需要注意一下. 具体实现 #include <iostream> # ...

  7. 正则表达式【TLCL】

    grep[global regular expression print] print lines matching a pattern grep [options] regex [file...] ...

  8. jmeter-执行多个sql查询语句

    1.添加jdbc connection(注意标红部分) 2.添加jdbc request 3.查看结果树

  9. Kubernetes的网络模型

    http://blog.csdn.net/zjysource/article/details/52052420

  10. Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!

    导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断 ...