两个android程序间的相互调用(apk互调)
来源:互联网 发布:华为hadoop大数据平台 编辑:程序博客网 时间:2024/05/20 09:27
两个android程序间的相互调用(apk互调)
分类: android学习 2013-01-06 23:09 1457人阅读 评论(0)收藏 举报
通常我们用到的只是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 { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public 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 { @Override protected 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" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android: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>
0 0
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用(apk互调)
- 两个android程序间的相互调用传递参数
- 两个android程序相互调用
- android 两个APK调用
- Android apk程序调用其他的APK程序
- Android程序里调用其他的APK
- 应用程序调用(apk级相互调用)
- 鱼缸的启示:Scale-out和Scale-up架构
- $ProxyXX cannot be cast to 类型
- AIX HACMP配置总结
- CS面试准备
- Linux内核模块驱动之---led驱动
- 两个android程序间的相互调用(apk互调)
- 远程访问mysql
- JNI中doc命令示例
- hdu1850 Being a Good Boy in Spring Festival 博弈 nim-sum定理
- git am patch 失败的处理方法
- tpl文件,php的模板文件?同html格式相同。不过有$var变量使用。
- 2013年11月25日星期一(DEMO5-3计算参数化直线和平面交点)
- Android 关于屏幕截图
- OGNL中{}代表集合,结果中集合用[]