intent activity action
来源:互联网 发布:莱克电气知乎 编辑:程序博客网 时间:2024/05/22 00:31
在同一个应用程序之间往往会通过Intent对象来指定一个activity. 并通过调用startActivity()方法和startActivityForResult()方法来启动这个
activity。另外,通过intent也可以调用其他应用程序的activity. SDK s甚至还允许开发人员自定义Activity Action.
这里我们看到,通信的关键是Intent对象。
根据intent对象多种重载的构造方法,我们可以把起分为显示intent对象和隐式intent对象。
以下为常用的intent构造函数:
显示intent对象构造器
pulic Intent(Context packageContext,Class<?cls >
隐式intent对象构造器
pulic Intent (String action)
public Intent (String action , Uri uri).
隐式intent对象,也就是说,通过intent对象并未明确指定intent的目标是哪一个Activity, 这些目标要依靠定义在AndroidManifest.xml文件中的配置信息才能够确定,也就是说,可以action 所指的目标可能有多个。在AndroidManifest.xml文件中可以配置多个接收同一个actiond的Activity action.
首先,我们看一下通过显示的intent对象来启动其他的activity.
1 通过startActivity( )方法来启动一个activity,
Intent intent = new Inent (this, Test.class);
StartActivity(intent);
如果我们要向新启动的activity传递数据的话,可以通过intent类的PutExtra方法。该方法有多种的重载。下面是常用的几种重载方式;
Public Intent putExtra(String name, String value)
Public Intent putExtra (String name, boolean value)
Public Intent putExtra (String name, int value)
Public Intent putExtra (String name ,Serializable value)
从上面多个构造方法可以看出,putExtra()方法可以保存各种类型的值。当通过startActivity()方法启动新的Activity的时候,这些值也
会一同传递到新启动的Activity. 在新的activity中,我们可以通过getIntent.getExtra()方法获得一个Bunble对象,并通过相应的Get方法获取
刚才put进去的值。
如果我们要通过putExtra()方法来传递一个复杂的数据,那么该数据必须是可序列化的。
例如,若我们要传递一个Person 对象的实例,则该类必须要实现Serializable接口。
class Person implements Serializable {
String name = "aaa" ;
int age = 12;
}
注意:使用putExtra()方法传递一个实现了Serializable接口的类的实例对象时,这个类中所有的成员也必须是可序列化的,否则会抛出异常。
若我们想要从新启动的activity 中获得返回的数据,那么在启动activity 的时候,因该通过调用startActivityForResult()方法。例如下面的代码:
Intent intent = new Intent (this, forResult.class);
startActivityForResult(intent , 1);
该方法 有两个参数:参数一是intent, 参数2 我们自定义的requestCode.该参数会在当前的Activity需要重写的onActivityResult()方法来获取返回
的 值。
例如,我们在启动的activity 中设置返回的数据通过如下代码:
情况1 :
getIntent.putExtra("test", "aaa");
setResult(20,getIntent()); // 保存结果代码和在启动的activity中设置的值。
情况2 :
setResult(21);
通过调用startActivityForResult()方法启动新的activtiy,一般我们都要在该类中 设置多个返回码。这个是由于startActivityForResult()的返回机制决定的。
@Override
protected void OnActivityResult( int requestCode, int resultCode, intent data) {
switch(requestCode) { // 首先应判断请求码 也就是我们在调用startActivityForResult 时的第二个参数
case 1:
if (resultCode == 20 ) {
textView.setText(date.getStringExtra("test")); // 这个是启动的activity返回的Intent
}
else if ( resultCode == 21) {
}
break;
default:
break;
}
super OnActivityResult( int requestCode, int resultCode, intent data);
}
调用其他应用程序中的activity(拨打点电话,浏览网页,发email)
关于应用程序的共享, 可以用contentProvider 共享应用程序的数据。这只是应用共享的一部分。下面是共享的令一种形式,activity Action.
这里我们要用到隐式的intent.
下面我们通过隐的式Intent 来调用系统应用程序的acitivity.
1 直接拨号
直接拨号的功能相当于我们直接拨打传入的手机号码。拨号对应的功能Action是Intent.ACTION_CALL.使用这个Action 必须要指定一个
uri. 代码如下:Intent callIntent = new Intent (Intent.ACTION_CALL, Uri.parse("tel"+12334444));
startActivity(callIntent);
在执行上述代码后,系统将会拨打在文本框中输入的电话号。
2 调用通讯录的Action 是 Intent.ACTION_CALL_BUTTON, 该action 没有输入和输出,可以使用如下代码直接调用。
intent callButtonIntent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(callButtonIntent);
3 将电话号码传入拨号盘
如果只想将电话号传入拨号盘 ,然后在作进一步的处理,需要使用Intent.ACTION_DIAL, 该ACTION 也需要一个
Uri. 代码如下: Intent dialIntent = new Intent ( Intent.ACTION_DIAL , Uri.parse("tel"+11223333));
4 调用浏览器
android SDK内置的WEB浏览器也对外提供了ACTION 。可以通过这个ACTION来传递一个WEB 网址。
intent webIntent = new Intent ( intent.ACTION_VIEW,Uri.parse("http://www.baidu.com"));
startActivity(webIntent);
5 向EMAIL 客户端发送Email地址
Uri uri = Uri.parse("mailto:xxx@adc.com");
Intent intent = new Intent (Intent.ACTION_SENDTO,uri);
startActivity(uri);
6 发送email:
在很多情况下,我们不仅要传送Email地址,还包括标题,内容等实质的信息。这些信息可以通过Intent.ACTION_SEND传递。
代码如下:
Intent aa = new Intent (Intent.ACTION_SEND);
aa.putExtra(Intent.EXTRA_EMAIL,new String[] {"test@126.com"});
aa.putExtra(Intent.EXTRA_CC,new String[] {"tAA@126.com"});
aa.putExtra(intent.EXTRA_SUBJECT,“指定Email 主题");
aa.putExtra(Intent.EXTRA_TEXT,"这个地方是内容");
aa.setType("text/plain");
startActivity(Intent.createChooser(aa,"选择发送消息的客户端"));
这里要注意的是Intent.createChooser()方法,该方法可以创建一个自定义的选择器。因为在android 系统中支持intent.ACTION_SEND动作的
不止Email客户端。 还有发送短信的客户端等等。因此会弹出一个选择菜单。
7 可以通过intent.ACTION_GET_CONTENT动作来选择拥有相同类型的应用。如下
Intent audioIntent = new Intent(intent.ACTION_GET_CONTENT);
audioIntent.setType("audio/*");
startActivity(Intent.createChooser(audioIntent,"选择音频程序"));
以上,setType("audio/*“)设置了应用的类型是audio/*,该类型表示选择系统中所有支持音频功能的应用。同样,也会弹出选择菜单。
- intent activity action
- 常见的Activity Action Intent常量
- 常见的Activity Action Intent常量
- androidmanifest.xml中的activity/intent-filter/action/category
- Intent 使用Action 和Data 属性启动系统activity
- 隐式Intent启动Activity,action不能使用@string配置
- 隐式Intent启动Activity,action不能使用@string配置
- intent action
- Intent.ACTION
- Intent Action
- Intent.Action
- Intent.action
- Intent action
- 使用Intent 的用法startActivity,使用intent-filter描述Activity的特征,使用setActiony设置action
- android.intent.action.MAIN与android.intent.category 决定哪个activity最先执行
- 关于activity元素的 android.intent.action.MAIN 和 android.intent.category.LAUNCHER
- No Activity found to handle Intent { act=android.intent.action.VIEW
- 为多个Activity配置android.intent.category.LAUNCHER和android.intent.action.MAIN
- Google I/o 2009 android 笔记 Adapter 与开发高效的UI
- main(int argc char**argv)具体用法
- 上海银行房贷增速减缓 二套房贷平均首付64%
- python 文件与目录操作
- 农行500亿次级债获批
- intent activity action
- C语言课程设计 贪吃蛇代码
- 将linux文件夹映射为网络盘,并使用tfs,无效!
- 显微镜知识,显微镜的光学故障
- 为什么有时候 LD_LIBRARY_PATH 不起作用(Why LD_LIBRARY_PATH is bad)
- LINUX gcc 也支持改变字体颜色
- sqlserver2005发布订阅详细图解
- ipc 消息队列 即时同步聊天通信
- VC在线程中操作界面