text="测试Intent的组件名称属性"
android:
id="@+id/myButton01"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"/>
在“com.yidu.demo”包中创建一个MainActivity类。
packagecom.yidu.demo;
importandroid.app.Activity;
importandroid.content.ComponentName;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
/**
*
*@authoradmins测试intent的CompentName属性
*/
publicclassMainActivityextendsActivity{
Buttonbtn;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//设置视图布局
setContentView(R.layout.main);
//根据布局文件中的配置产生Button按钮
btn=(Button)findViewById(R.id.myButton01);
//为按钮添加监听器
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
/*
*实例化组件名称newComponentName(当前Activity对象,"需要传递到的Activity")
*/
ComponentNamecn=newComponentName(MainActivity.this,
"com.yidu.demo.MyActivity");
//实例化Intent对象
Intentintent=newIntent();
//为intent设置组件名称属性
intent.setComponent(cn);
//启动Activity
startActivity(intent);
}
});
}
}
在该工程的res\layout\目录下创建一个布局文件my_layout.xml,在其中添加一个TextView组件。
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
orientation="vertical"
android:
layout_width="match_parent"
android:
layout_height="match_parent">
text="@+id/TextView01"
android:
id="@+id/TextView01"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"/>
在该工程中创建另外一个名为MyActivity的类。
packagecom.yidu.demo;
importandroid.app.Activity;
importandroid.content.ComponentName;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassMyActivityextendsActivity{
privateTextViewtv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//设置视图布局
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
//得到前一个Activity传过来的Intent
Intentintent=this.getIntent();
//得到组件名称对象
ComponentNamecn=intent.getComponent();
//获得包的名称
StringpackageName=cn.getPackageName();
//得到类名
StringclassName=cn.getClassName();
tv=(TextView)findViewById(R.id.TextView01);
//显示
tv.setText("组件包名称:
"+packageName+"\n"+"组件类名称:
"+className);
}
}
Intent的Action属性
Action是指Intent要完成的动作,是一个字符串常量。
在Intent类里面定义了大量的Action常量属性,例如,ACTION_CALL(打电话)、ACTION_EDIT(编辑数据)、ACTION_BATTERY_LOW(电量低广播Action)等。
我们也可以自己定义Action来使用。
我们可以使用setAction()来设置IntentAction属性,使用getAction来获得Intent的Action属性。
1、自定义Action属性
我们可以为Intent定义一个Action属性来访问,Action属性是一个字符串,我们在程序中定义,并在要访问组件(例如:
Activity)的IntentFilter中声明就可以使用来。
下面的实例将演示如何自定义一个IntentAction属性。
在工程的res\layout\目录下创建一个main.xml布局文件,在其中添加一个Button组件。
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
text="@string/hello"
/>
text="测试action属性"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
id="@+id/btn"/>
创建一个工程,在“com.yidu.test”包中创建一个MyActivity类。
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMyActivityextendsActivity{
publicfinalstaticStringMY_ACTION="com.yidu.test.MY_ACTION";
Buttonbtn;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
//实例化Intent类
Intentintent=newIntent();
//为Intent对象设置Action属性
intent.setAction(MY_ACTION);
//启动Activity
startActivity(intent);
}
});
}
}
在工程的res\layout\目录下创建一个second.xml布局文件,在其中添加一个TextView视图组件。
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
layout_width="wrap_content"
android:
layout_height="wrap_content">
id="@+id/tv"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"/>
创建一个SecondActivity类,在其顶部声明TextView组件,在onCreate()方法中实例化它,获得Intent实例,从而获得action属性并显示在TextView中。
packagecom.yidu.test;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassSecondActivityextendsActivity{
TextViewtv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
tv=(TextView)findViewById(R.id.tv);
//获得Intent对象
Intentintent=getIntent();
//获得Intent对象中包装的action
Stringaction=intent.getAction();
//将action设置在TextView中
tv.setText(action);
}
}
程序运行结果如下:
2、访问系统Action属性
AndroidIntent类中定义了很多Action属性常量,这些有标准Activity和BroadcastReceiver的。
上面我们讲述如何访问自定义Action属性。
下面我们将讲述如何访问系统Action属性。
例如,我们实现一个发送短信的程序,在这个程序中,我们需要选择对方的电话号码,这时候我们可以调用系统电话本来查找电话号码。
我们可以使用Intent.ACTION_GET_CONTENT常量调用系统Activity来实现该功能。
在工程res\layout\目录中创建一个main.xml布局文件,在其中添加一个Button组件。
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
id="@+id/button01"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"
android:
text="调用电话簿"/>
创建一个Demo3Activity类。
packagecom.yidu.demo;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassDemo3ActivityextendsActivity{
Buttonbtn;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.button01);
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Intentintent=newIntent();
//设置Action属性为得到联系人
intent.setAction(Intent.ACTION_GET_CONTENT);
//设置其类型
intent.setType("vnd.android.cursor.item/phone");
//开启Activity。
startActivity(intent);
}
});
}
}
3、Intent的Data属性
Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。
例如,ACTION_EDITAction应该和要编辑的文档URIData匹配,Action_VIEW应用和要显示的URI匹配。
下面列出了一些常见的Action和Data的匹配应用。
Action属性
Data属性
说明
ACTION_VIEW
content:
//contacts/people/1
显示_id为1的联系人信息
ACTION_DIAL
content:
//contacts/people/1
将_id为1的联系人电话号码显示在拨号界面中
ACTION_VIEW
tel:
123
显示电话为123的联系人信息
ACTION_VIEW
在浏览器中浏览该网址
ACTION_VIEW
File:
///sdcard/mymusic.mp3`
播放Mp3
ACTION_VIEW
geo:
39.3256.116.2312
显示地图
案例如下:
在res\layout\目录下创建一个main.xml的文件。
xmlversion="1.0"encoding="utf-8"?
>
android="
android:
orientation="vertical"
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
>
id="@+id/btn"
android:
text="按钮"
android:
layout_width="wrap_content"
android:
layout_height="wrap_content"/>
创建一个测试的Activity的界面类。
importandroid.app.Activity;
importandroid.content.Intent;
import.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassMyActivityextendsActivity{
Buttonbtn;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(newOnClickLi