Activity之间的通信
Activity 之间的通信是通过Intent实现的
1.由activity A 到B -- 调用同一个应用下的activity
a.普通方式
流程:创建一个Intent实例 ,通过Intent指定从哪个Activity到哪个Activity,然后 A实例对象.startActivity(Intent实例) eg:
Intent intent = new Intent(A.this,B.class);
你也可以传参数到目标Activity
intent.putExtra("key",value);----有个中重载,如果你要传的值是自己定义的类对象,那么这个类必须实现
java.io.Serializable 接口
A的实例对象.startActivity(intent);
b.启动带返回值的Activity
既然能从A传参数到B,肯定也能从B返回数据给A
流程: 创建一个Intent实例,然后A的实例对象.startActivityForResult(Intent实例,int类型的请求标示);
重写A类的onActivityResult(int requestCode, int resultCode, Intent data) ;
注意:int类型的请求标示必须是唯一的,通常情况下 我们使用布局文件的int表示方式作为请求标示
eg:
//启动 带返回值的activity
Intent intent = new Intent(A.this,B.class);
A的实例对象.startActivityForResult(intent, R.layout.main);
//在B类中 指定返回值
Intent intent=B的实例对象.getIntent().putExtra("key","hello");
B的实例对象.setResult(20,intent);
//重写A类的onActivityResult(int requestCode, int resultCode, Intent data) 接收数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case R.layout.main:
if(requestCode==20)
{
String resultStr= data.getStringExtra("key");
}
break;
default:
break;
}
}
变量resultStr 就是返回值 为 hello;
2.调用不同应用程序的Activity
创建Intent实例时 有很多重载
public Intent(Context packageContext,Class<?> cls); --- 上面已经使用了
public Intent(String action);
public Intent(String action,Uri uri);
调用其他应用程序的Activity 就是通过后两种构造实现的 (通过Action 的方式);
a.调用系统的应用程序
android 系统自带很多功能的应用,像打电话,浏览网页,发送Email等。。
eg: 打电话
Intent intent = new (Intent.Action_CALL,Uri.parse("tel:"+电话号码));
startActivity(intent);
b.己的Activity Action 供别的应用调用
流程:在AndroidManifest.xml 中的被调用的Activity的节点下定义Action ,在调用方使用Intent(String action) 构造调用
注意:两个Activity 可以 属于不同的应用
eg :
AndroidManifest.xml 中定义 Action
<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.myaction"/>
</intent-filter>
</activity>
调用方调用
Intent intent = new Intent("com.myaction");
startActivity(intent);
c.用需要传参的其他应用的Activity
由第三种构造( public Intent(String action,Uri uri);) 可以了解我们可以通过Uri对象给被调用的Activity传递参数
分析Uri的格式("tel:12345678")可以发现Uri需要一个头 ("tel"); 这个头在你自定义action 的时候需要自己定义
这个头也是在Androidmanifest.xml 中定义
流程:在AndroidManifest.xml 中的被调用的Activity的节点下定义Action 和Uri头,在调用方使用
Intent(String action,Uri uri);构造调用
eg:
在AndroidManifest.xml 中定义Action 和 Uri头
<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.myaction"/>
<!--Uri头-->
<data android:scheme="myscheme"></data>
</intent-filter>
</activity>
在调用方调用
Uri uri = Uri.parse("myscheme://哈哈哈");
Intent intent = new Intent("com.myaction",uri);
startActivity(intent);
在被调用方的到传过来的参数
Uri uri = getIntent().getData();
String str= uri.getHost();
str变量得到的值就是“哈哈哈”
分享到:
相关推荐
39、Activity与Service运行中通信 40、Service 相当于没有界面的activity 41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI...
39、Activity与Service运行中通信 40、Service 相当于没有界面的activity 41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent.ACTION.CALL的使用 5.3 自制发送短信程序——SmsManager与PendingIntent对象 5.4 自制发送...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView...
4.1.4 使用Bundle在Activity之间 交换数据 181 4.1.5 启动其他Activity并返回结果 185 4.2 Activity的回调机制 189 4.3 Activity的生命周期 190 4.3.1 Activity的生命周期演示 190 4.3.2 Activity与...
4.3.2 Activity与Servlet的相似性与 区别 194 4.4 本章小结 195 第5章 使用Intent和IntentFilter 第5章 进行通信 196 5.1 Intent对象详解 197 5.1.1 使用Intent启动系统组件 197 5.2 Intent的属性及intent-filter ...
4.3.2 Activity与Servlet的相似性与 区别 194 4.4 本章小结 195 第5章 使用Intent和IntentFilter 第5章 进行通信 196 5.1 Intent对象详解 197 5.1.1 使用Intent启动系统组件 197 5.2 Intent的属性及intent-filter ...
7.1.2 Activity之间的消息传递 7.2 Intent的分类 7.2.1 Action Intent 7.2.2 Broadcast Intent 7.3 解析Intent的实现 7.3.1 Intent Receiver 7.3.2 Intent Filter 7.4 设置Activity许可 7.5 应用实例详解:电话拨号...