两个android程序调用,两个android程序间的相互调用(apk互调)

转自:http://blog.csdn.net/annaleeya/article/details/8475053

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

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

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

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

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

所有的界面都是最简单的

这是第一个demoapk1

49763489_1.jpg

这是demoapk2的主要activity

49763489_2.jpg

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

49763489_3.jpg

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

49763489_4.jpg

第一种:ComponentName()

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

packagecom.hooy.apk1;importandroid.app.Activity;importandroid.content.ComponentName;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.MotionEvent;public class Demoapk1Activity extendsActivity {

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

@Overridepublic booleanonTouchEvent(MotionEvent event) {

ComponentName componetName= newComponentName(//这个是另外一个应用程序的包名

"com.hooy.apk2",//这个参数是要启动的Activity

"com.hooy.apk2.Pay_Activity");//Intent intent= new Intent("chroya.foo");

Intent intent= newIntent();//我们给他添加一个参数表示从apk1传过去的

Bundle bundle = newBundle();

bundle.putString("arge1", "这是跳转过来的!来自apk1");

intent.putExtras(bundle);

intent.setComponent(componetName);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//设置回退startActivity(intent);return super.onTouchEvent(event);

}

}

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

packagecom.hooy.apk2;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.TextView;public class Pay_Activity extendsActivity {

@Overrideprotected voidonCreate(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一样,只有一点不同:   

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

参考地址:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值