Loading

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>

 

posted @ 2014-10-21 15:59  Yano_nankai  阅读(167)  评论(0编辑  收藏  举报