一、简介
Intent本意为目的、意向、意图。在Android中,Intent是系统各组件之间进行数据传递的数据负载者。Intent不仅可以用于应用程序之间的交互,也可以用于应用程序内部的activity、service和broadcast receiver之间的交互。
二、用法实例
① 无参数Activity跳转
Intent it = new Intent(Activity.Main.this, Activity2.class);
startActivity(it);
三种代码方式
//No1
Intent intent = new Intent();
ComponentName cpN = new ComponentName(MainActivity.this, OtherActivity.class);
intent.setComponent(cpN);
startActivity(intent);
//No2
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
startActivity(intent);
//No3
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
startActivity(intent);
② 向下一个Activity传递数据(使用Bundle和Intent.putExtras)
Intent it = new Intent(Activity.Main.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("name", "This is from MainActivity!");
it.putExtras(bundle); // it.putExtra(“test”, "shuju”);
startActivity(it); // startActivityForResult(it,REQUEST_CODE);
对于数据的获取可以采用
Bundle bundle=getIntent().getExtras();
String name=bundle.getString("name");
③ 向上一个Activity返回结果
使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity
Intent intent=getIntent();
Bundle bundle2=new Bundle();
bundle2.putString("name", "This is from ShowMsg!");
intent.putExtras(bundle2);
setResult(RESULT_OK, intent);
④ 回调上一个Activity的结果处理函数(onActivityResult)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==REQUEST_CODE){
if(resultCode==RESULT_CANCELED)
setTitle("cancle");
else if (resultCode==RESULT_OK) {
String temp=null;
Bundle bundle=data.getExtras();
if(bundle!=null) {
temp=bundle.getString("name");
}
setTitle(temp);
}
}
}
三、系统Intent用法实例
显示网页
Uri uri = Uri.parse("http://google.com");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
打电话
//叫出拨号程序
Uri uri = Uri.parse("tel:10086");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
//直接打电话出去
Uri uri = Uri.parse("tel:10086");
Intent it = new Intent(Intent.ACTION_CALL, uri);
startActivity(it);
//用這個,要在 AndroidManifest.xml 中,加上
//<uses-permission id="android.permission.CALL_PHONE" />
播放mp3
Uri playUri = Uri.parse("file:///sdcard/test.mp3");
Intent intent = new Intent(Intent.ACTION_VIEW, playUri);
intent.setDataAndType(playUri, "audio/mp3");