1、显示Intent
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
startActivity(intent);
2、隐式Intent
打开AndroidMainfest.xml,添加如下代码(每个Intent中只能指定一个action,但能指定多个category)
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.activitytest.MY_CATEGORY"/>//添加自定义的Category()
</intent-filter>
</activity>
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");//添加自定义的Category
startActivity(intent);
3、调用系统浏览器打开网页
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
与此对应,还可以在<intent-filter>标签中配置一个<data>标签,用于更精准的指定当前活动能够响应什么类型的数据
android:scheme。用于指定数据的协议部分,如上例中的 http 部分。
android:host。用于指定数据的主机名部分,如上例中的www.baidu.com.。
android:port。用于指定数据的端口部分,一般紧随在主机名之后。
android:path。用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
android:mimeType。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该Intent
例如:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
1,web浏览器
Uri uri= Uri.parse("http://kuikui.javaeye.com");
returnIt = new Intent(Intent.ACTION_VIEW, uri);
2,地图
Uri mapUri = Uri.parse("geo:38.899533,-77.036476");
returnIt = new Intent(Intent.ACTION_VIEW, mapUri);
3,调拨打电话界面
Uri telUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_DIAL, telUri);
4,直接拨打电话
Uri callUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_CALL, callUri);
5,卸载
Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
6,安装
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
7,播放
Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);
8,掉用发邮件
Uri emailUri = Uri.parse("mailto:[email protected]");
returnIt = new Intent(Intent.ACTION_SENDTO, emailUri);
9,发邮件
returnIt = new Intent(Intent.ACTION_SEND);
String[] tos = { "[email protected]" };
String[] ccs = { "[email protected]" };
returnIt.putExtra(Intent.EXTRA_EMAIL, tos);
returnIt.putExtra(Intent.EXTRA_CC, ccs);
returnIt.putExtra(Intent.EXTRA_TEXT, "body");
returnIt.putExtra(Intent.EXTRA_SUBJECT, "subject");
returnIt.setType("message/rfc882");
Intent.createChooser(returnIt, "Choose Email Client");
10,发短信
Uri smsUri = Uri.parse("tel:100861");
returnIt = new Intent(Intent.ACTION_VIEW, smsUri);
returnIt.putExtra("sms_body", "shenrenkui");
returnIt.setType("vnd.android-dir/mms-sms");
11,直接发邮件
Uri smsToUri = Uri.parse("smsto://100861");
returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri);
returnIt.putExtra("sms_body", "shenrenkui");
12,发彩信
Uri mmsUri = Uri.parse("content://media/external/images/media/23");
returnIt = new Intent(Intent.ACTION_SEND);
returnIt.putExtra("sms_body", "shenrenkui");
returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri);
returnIt.setType("image/png");
3、向下一个活动传递数据
传递数据:
String data="Hello RequestActivity";
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
intent.putExtra("etra_data",data);
startActivity(intent);
接收数据
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("ResultActivity",data);
4、返回数据给上一个活动
请求数据:
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
startActivityForResult(intent,1);
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode==RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("RequestActivity",returnedData);
}
break;
default:
}
}
返回数据:(通过返回按钮返回数据,使用onBackPressed方法)
Intent intent=new Intent();
intent.putExtra("data_return","Hello");
setResult(RESULT_OK,intent);
finish;
5、启动活动的最佳写法
第一页面:
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
intent.putExtra("data",data);
startActivity(intent);
第二页面:
启动活动不清楚传递哪些数据的时候:
public static void actionStart(Context context,String data){
Intent intent=new Intent(context,ResultActivity.class);
intent.putExtra("data",data);
context.startActivity(intent);
}
点击事件调用:
ResultActivity.actionStart(RequestActivity.this,"data");