首页 > 代码库 > 06_Intent和IntentFilter

06_Intent和IntentFilter

  Intent是同一个或不同的应用中的组件之间的消息传递的媒介,是一个将要执行动作的抽象描述,一般来说是作为参数来使用。

 

  Intent描述要启动的基本组件;

  IntentFilter对组件进行过滤。

 

  下面的代码通过Intent,具有打开Activity、打开图片、拨打10086和打开网页的功能。

 

package com.example.intentdemo;import java.io.File;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.content.Intent;import android.net.Uri;import android.os.Bundle;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                findViewById(R.id.btnStartAty1).setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                                //显式Intent                //Intent i = new Intent();                //i.setComponent(new ComponentName("com.example.intentdemo", "com.example.intentdemo.Aty1"));                                //通过一个action来启动,由操作系统来启动                //隐式Intent                Intent i = new Intent("com.example.intentdemo.intent.action.Ayt1");                startActivity(i);                            }                    });                findViewById(R.id.btnOpenImage).setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                File f = new File("/storage/emulated/0/Pictures/Screenshots/Screenshot_2014-08-30-08-08-10.png");                Intent i = new Intent(Intent.ACTION_VIEW);                i.setDataAndType(Uri.fromFile(f), "image/*");                startActivity(i);                            }        });                findViewById(R.id.btnDel10086).setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                Intent i = new Intent(Intent.ACTION_VIEW);                i.setData(Uri.parse("tel:10086"));                startActivity(i);            }        });                findViewById(R.id.btnOpenBaidu).setOnClickListener(new View.OnClickListener() {                        @Override            public void onClick(View v) {                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));                startActivity(i);            }        });    }}

 Manifest文件:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.intentdemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.intentdemo.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity><activity android:name="Aty1">            <intent-filter>                <category android:name="android.intent.category.DEFAULT" /><action android:name="com.example.intentdemo.intent.action.Ayt1" />                            </intent-filter>        </activity>                <activity android:name="ImageViewer">                        <intent-filter >                                <action android:name="android.intent.action.view"/>                <category android:name="android.intent.category.DEFAULT"/>                <data android:mimeType="image/*" android:scheme="file"/>                            </intent-filter>                    </activity>    </application></manifest>

 

06_Intent和IntentFilter