通常我们用到的只是activity之间的互相跳转和调用,很少会用到apk级别的互相调用。

往往在一些应用上会用到,比如一个支付系统,可能会有很多的一系列的程序调用到:彩票系统、订票系统、团购网……全部使用一个支付系统会显的更加专业,也能减少不必要的重复。

下面介绍两种方法从一个apk启动另一个apk。

两个互相调用的项目是:demoapk1和demoapk2

demoapk2是被调用的,我们调用它的Pay_Activity.java

所有的界面都是最简单的

这是第一个demoapk1

这是demoapk2的主要activity

这是apk2点击后跳转到结果(同一个apk中的跳转)

这是apk1跳转到apk2的得到的结果(注意上方apk的title)

第一种:ComponentName()

使用ComponentName()可以跳转到任何一个activity,不论是不是main activity。也不必写修改被调用的apk的AndroidManifest.xml任何内容,如下:

package com.hooy.apk1;import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;public class Demoapk1Activity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}@Overridepublic boolean onTouchEvent(MotionEvent event) {ComponentName componetName = new ComponentName(//这个是另外一个应用程序的包名 "com.hooy.apk2",//这个参数是要启动的Activity "com.hooy.apk2.Pay_Activity");
//        Intent intent= new Intent("chroya.foo");Intent intent= new Intent();//我们给他添加一个参数表示从apk1传过去的Bundle bundle = new Bundle();bundle.putString("arge1", "这是跳转过来的!来自apk1");intent.putExtras(bundle);intent.setComponent(componetName);startActivity(intent);return super.onTouchEvent(event);}
}

ComponentName的参数已经写的比较详细了

package com.hooy.apk2;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;public class Pay_Activity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//改变文字内容,标志这是从activity跳转过来的TextView texView= (TextView) findViewById(R.id.text1);texView.setText("我来自其他activity");Intent intent= getIntent();String value=intent.getStringExtra("arge1");if(value!=null&&!value.equals("")){texView.setText(value);//这里将显示“这是跳转过来的!来自apk1”}else{System.out.println("空的参数");}}
}

第一种方法也是比较简单。

第二种方法Intent+AndroidManifest.xml

顾名思义,此方法是用Intent和修改AndroidManifest.xml达成的。

intent就是我在上面第一个Demoapk1Activity中注释掉的内容

要修改的AndroidManifest.xml是demoapk2中的。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.hooy.apk2"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="7" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:label="@string/app_name"android:name=".Demoapk2Activity" ><intent-filter ><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".Pay_Activity"><intent-filter>   <action android:name="chroya.foo"/>   <category android:name="android.intent.category.DEFAULT"/>   </intent-filter></activity></application>
</manifest>

和往常的xml一样,只有一点不同:<intent-filter> <action android:name="chroya.foo"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>

就是给Pay_Activity取一个名字,供其他apk访问使用。实际效果和第一个方法一样。

参考地址:

《启动另外的一个应用程序的Activity(三种方式)》http://www.apkbus.com/android-43480-1-1.html

转载于:https://www.cnblogs.com/winxiang/archive/2012/05/04/2482883.html

两个android程序间的相互调用(apk互调)相关推荐

  1. SAP中程序间的相互调用,SUBMIT关键字的用法

    在ABAP中可以用SUBMIT 关键字来实现程序之间的调用,是很好用的一个关键字 (1)调用另一个程序 比如: SUBMIT ZHR_UPDATE_IT0008. "调用更新信息类型0008 ...

  2. python中如何解决类互相调用问题_两个.py之间类的相互调用问题

    本帖最后由 lightninng 于 2015-5-4 23:35 编辑 楼主,你这个问题涉及到的方面比较多,不仅仅是模块调用和类相关的一些问题,给人的感觉是,自己想出来的一个方法,想验证怎么能得到正 ...

  3. Swift和OC文件间的相互调用

    2019独角兽企业重金招聘Python工程师标准>>> 公共文件/桥接的方法 2016/1/26         13:33 Swift使用OC文件方法 看完上面内容之后,你只需要这 ...

  4. pycharm中两个.py文件相互调用和传递参数

    在编写比较大的程序或团队协同工作时,常常会用到两个.py程序之间的相互调用和传递参数,我把自己理解的一个方法写一下. 首先要求pycharm已经安装了sys库,已知sys.argv是传递参数的核心. ...

  5. 实现程序间的数据传递

    在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...

  6. 【转载】用Delphi实现程序间的数据传递

    在实际应用中,我们经常需要多个程序相互配合来完成某些特定功能.例如两个应用程序间的同步.互斥:应用程序在起第二份实例时的参数自动传递-.要实现这些功能,就必须能实现程序间的数据传递. 有些特殊的高级技 ...

  7. 《教我兄弟学Android逆向01 编写第一个Android程序》

    前言 之所以准备写这一系列逆向的教程是因为有一些同学私信我说自己想学习Android逆向但是不知道怎么去学习 包括自己身边的一些计算机专业的同学 在大学里面老师讲的那些东西要么是自己不感兴趣 要么是自 ...

  8. android应用间相互调用

    android应用间相互调用 调用方: activity中添加:(red:应用包名,green:被调用activity名称,包含包名) Intent intent = new Intent(); Co ...

  9. ABAP程序相互调用--SUBMIT

    (1) 调用其他程序: * Trigger the IDOCSUBMIT zpcppmd001_idoc AND RETURN. (2) 调用其他程序参数传递参数: *当被调用的程序的屏幕有输入参数时 ...

  10. Android JNI学习(五)——Java与Native之间如何实现相互调用

    本章将讲述Java与Native之间如何实现相互调用.我将围绕围绕如下三点来讲解. #mermaid-svg-qeVnGlVrLWrB5ryX .label{font-family:'trebuche ...

最新文章

  1. 详细!快速入门指南!Docker!
  2. SAP PP使用ECR去修改Recipe主数据,报错:Generation not supported for change object
  3. datatables中的bug
  4. 微软职位内部推荐-Senior SDE for Cloud Platform
  5. 使用vue-amap
  6. docker中使用golang:alpine镜像制作开启goweb的dockerfile
  7. oracle输出查询返回多行,ORA-01427:单行子查询返回多行
  8. Java GC系列(1):Java垃圾回收简介
  9. 如何计算Python中列表项的出现次数?
  10. android 自定义库,Android自定义Log库
  11. NA-NP-IE系列实验44: 划分VLAN
  12. python3正式发布时间_Python3 日期和时间
  13. Service Mesh 如何重定义云原生计算?阿里服务网格技术大揭秘
  14. 使用ActiveReports for .net 进行报表开发(十)--交叉变换背景 (转)
  15. 那些年我们一起追寻过的考研(华科计算机)
  16. badboy的脚本录制教程
  17. Kali安装中文输入法
  18. 怎么用计算机检测颜色的深浅,真假10bit? !怎么测试呢?两种测试显示器10位色深的方法...
  19. 惠普m154a状态页_惠普m154a感叹号闪烁
  20. 学习退款数据分析思路

热门文章

  1. 订个票,显示吾是何等的脑残
  2. SHELL下如何去掉字串里的空格(或指定字符)
  3. java和python哪个运行速度快_为什么Python代码的运行速度比较慢呢?这会影响Python语言的扩张吗?...
  4. GitHub 和GitLab的开发工具使用
  5. 剑三 服务器维护,11月15日服务器例行维护公告 补偿部分服务器
  6. inmotion服务器账号密码,InMotionHosting如何通过SSH连接服务器
  7. java的线程的daemon_Java 多线程(四)之守护线程(Daemon)
  8. cdc2016年cypher资源_CDC最新Cypher!Ty.简直叼爆
  9. 西门子plm_西门子PLM组件之形状搜索(支持工业软件国产自主可控)
  10. 电脑机器人_磨小分校参加成都市“青少年电脑机器人创新实践活动”巡航者决赛...