Android 入门之Intent应用

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");

猜你喜欢

转载自blog.csdn.net/y1361408906/article/details/71424996