Intent的属性及Intent-filter配置——实例Action、Data属性启动系统Activity

     一旦为Intent同时指定了Action、Data属性,那么Android将可根据指定的数据类型来启动特定的应用程序,并对指定数据类型执行相应的操作。

     下面是几个Action属性、Data属性的组合。

  • ACTION_VIEW  content://com.android.contacts/contacts/1:显示标识为1的联系人的信息。
  • ACTION_EDIT   content://com.android.contacts/contacts/1:编辑标识为1的联系人的信息。
  • ACTION_DIAL   content://com.android.contacts/contacts/1:显示向标识为1的联系人拨号的界面。
  • ACTION_VIEW  tel:123:显示向指定号码123拨号的界面。
  • ACTION_DAL    tel:123:显示向指定号码123拨号的界面。
  • ACTION_VIEW  content://contacts/people/:显示所有联系人列表的信息,通过这种组合可以非常方便地查看系统联系人。

     下面的程序示范通过同时为Intent指定Action、Data属性来启动特定程序并操作相应的数据。下面的程序的界面很简单,它只包含两个按钮,其中一个按钮用于浏览指定网页,一个按钮用于编辑指定联系人信息。

      

package com.example.studyintent;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ActionData extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_action_data);
        Button bn=(Button)findViewById(R.id.bn);
        //为bn按钮添加一个监听器
        bn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //创建Intent 
                Intent intent=new Intent();
                String data="http://www.crazyit.org";
                //根据指定字符串解析出Uri对象
                Uri uri=Uri.parse(data);
                //为Intent设置Action属性
                intent.setAction(Intent.ACTION_VIEW);
                //设置Data属性
                intent.setData(uri);
                startActivity(intent);
            }
            
        });
        
        Button edit=(Button)findViewById(R.id.edit);
        //为edit按钮添加一个监听器
        edit.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //创建Intent
                Intent intent=new Intent();
                //为Intent设置Action属性(动作为:编辑)
                intent.setAction(Intent.ACTION_EDIT);
                String data="content://com.android.contacts/contacts/1";
                //根据指定字符串解析出Uri对象
                Uri uri=Uri.parse(data);
                //设置Data属性
                intent.setData(uri);
                startActivity(intent);
            }
        });
    
        Button call=(Button)findViewById(R.id.call);
        //为edit按钮添加一个监听器
        call.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //创建Intent
                Intent intent=new Intent();
                //为Intent设置Action属性(动作为:拨号)
                intent.setAction(Intent.ACTION_DIAL);
                String data="tel:13800138000";
                //根据指定字符串解析出Uri对象
                Uri uri=Uri.parse(data);
                //设置Data属性
                intent.setData(uri);
                startActivity(intent);
            }
        });
        
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.action_data, menu);
        return true;
    }

}

运行上面的程序,单击第一个按钮,该按钮单击时启动Intent(Action=Intent.ACTION_VIEW,Data=http://www.crazyit.org)对应的Activity,将看到打开www.crazyit.org的界面,如图5.13所示。

   

单击第二个按钮,该按钮单击时启动Intent(Action=Intent.ACTION_EDIT,Data=content://com.android.contacts/contacts/1)对应的Activity,将看到编辑标识为1的联系人的界面。

单击第三个按钮,该按钮单击时启动Intent(Action=Intent.ACTION_DIAL,Data=tel:13800138000)对应的Activity,将看到程序向13800138000拨号的界面,如图5.15所示。

posted @ 2013-11-17 16:28  TealerProg  Views(639)  Comments(0Edit  收藏  举报