android的Intent

        //通过制定setComponent来启动组件
	public void start(View view){
		//创建一个意图
		//Intent intent=new Intent(this,MainActivity2.class);
		Intent intent=new Intent();
		//创建组件,通过组件响应,直接Intent
		ComponentName component=new ComponentName(this, MainActivity2.class);
		intent.setComponent(component);
		startActivity(intent);
	}
        public void start1(View view){
		Intent intent=new Intent(this,MainActivity9.class);
		startActivity(intent);
	}

通过action属性查找启动activity,必须在清单文件中进行配置

成都创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元峄城做网站,已为上家服务,为峄城各地企业和个人服务,联系电话:028-86922220

        //通过action属性查找启动activity
	public void start2(View view){
		Intent intent=new Intent();
		//设置动作,实际上action就是字符串标记而已
		intent.setAction(MainActivity3.MY_ACTION);
		startActivity(intent);
	}

MainActivity3

package com.example.intent;

import android.app.Activity;
import android.os.Bundle;
/**
 * 在自定义动作时,使用action组件时,必须添加一个默认类别
 * 
              
                  
                  
                  
   
   
 * 如果有多个组件被匹配成功,就会对话框列表的形式让用户进行选择
 * */
public class MainActivity3 extends Activity{
	//自定义action标记
	
	public static final String MY_ACTION="com.example.action.MY_ACTION";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main3);
	}
}

清单文件中的配置,如果没有类别,必须写上默认类别

  
        
            
                

                
            
        

加入的类别越多,越精确,如果有找不到的类别会报错(假设有两个类别,一个类别未找到,则报错)

public void start3(View view){
		Intent intent=new Intent();
		intent.setAction(MainActivity4.MY_ACTION);
		intent.addCategory(MainActivity4.MY_CATEGORY);
		//如果MainActivity4中没有在清单文件中配置,且写了下面的类别,则会报错
		//intent.addCategory(MainActivity4.MY_CATEGORY2);
		//加入的类别越多,越精确,如果有找不到的类别会报错
		startActivity(intent);
	}

MainActivity4

package com.example.intent;

import android.app.Activity;
import android.os.Bundle;
/**
 * 自定义类别
 * 在Intent中可以添加多个类别
 * 那就要求被匹配的组件必须同时满足这多个类别才能匹配成功,否则匹配失败
 * 
 * */
public class MainActivity4 extends Activity{
	//自定义动作类别
	public static final String MY_CATEGORY="com.example.category.myCategory";
	public static final String MY_CATEGORY2="com.example.category.myCategory2";
	//自定义动作
	public static final String MY_ACTION="com.example.action.myAction2";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main4);
	}
}

清单文件中的MainActivity4

 
              
                
                  
                  
                  
                  
                  
			  
 

 intent中的Date属性

 Date属性表示动作(要操作)的数据

 实际上一个Date是用一个URI对象表示

 通常情况下,使用action+date属性的组合来描述一个意图(intent)

 当Intent匹配的组件有多个时,先显示优先级高的组件,如果优先级相同,显示列表让用户自己选择

 优先级从-1000到1000,并且其中一个必须为负值才有效

MainActivity5:指定访问一个网址

                

                   

                   

               

               

Intent intent=new Intent();

intent.setAction(Intent.ACTION_VIEW);

Uri uri=Uri.parse("http://java.lampbrother.net");

intent.setData(uri);

startActivity(intent);

package com.example.intent;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
/**
 * intent中的Date属性
 * Date属性表示动作(要操作)的数据
 * 实际上一个Date是用一个URI对象表示
 * 通常情况下,使用action+date属性的组合来描述一个意图(intent)
 * 
 * 
 * 
 * 当Intent匹配的组件有多个时,先显示优先级高的组件,如果优先级相同,显示列表让用户自己选择
 * 优先级从-1000到1000,并且其中一个必须为负值才有效
 * */
public class MainActivity5 extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main5);
	}
	
	
	public void testActionDateClick(View ivew){
		Intent intent=new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		Uri uri=Uri.parse("http://java.lampbrother.net");
		intent.setData(uri);
		startActivity(intent);
	}
	
	public void testActivity7(View view){
		Intent intent=new Intent(this,MainActivity7.class);
		startActivity(intent);
	}
}

清单文件中MainActivity5的配置

         
            
                
                    
                    
                	
                
         

Intent

 date+type属性

 type表示数据的类型或者MIME类型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...)

 date和type属性,一般只需要一个

 通过setDate方法会把type实行设置为null,相反,设置setType也会把date属性设置为null

 如果想要两个属性同时设置,要使用setDateAndType方法设置

MianActivity7:调用系统选择(各种)文件,以mp3文件为例,

package com.example.intent;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
/**
 * Intent
 * date+type属性
 * type表示数据的类型或者MIME类型(如:text/xml,text/html,audio/mp3,p_w_picpath/png...)
 * date和type属性,一般只需要一个
 * 通过setDate方法会把type实行设置为null,相反,设置setType也会把date属性设置为null
 * 如果想要两个属性同时设置,要使用setDateAndType方法设置
 * 
 * */
public class MainActivity7 extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main7);
	}
	
	public void play7(View view){
		Intent intent=new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		Uri date=Uri.parse("file:///sdcard/xx.mp3");
		//intent.setData(date);
		//intent.setDataAndType(data, type);
		intent.setType("audio/mp3");
		startActivity(intent);
	}
}

MainActivity8

package com.example.intent;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
/**
 * activity的启动模式:4种
 * 1.standard 标准模式,每次启动都会创建一个新的activity,加入目标任务的栈顶
 * 2.singleTop,判断当前任务栈顶是否存在相同的activity,如果存在直接使用
 * 如果不存在,那么创建新的activity对象放入栈顶
 * 3.singleTask:在任务栈中是会判断否存在相同的activity,如果存在,那么会清除该activity之上的其他activity对象来显示
 * 如果不存在,创建新的activity对象放入栈顶
 * 4.singleInstance:会在一个新的任务栈中创建activity,并且该任务栈中只允许存在一个activity实例,
 * 其他调用该activity的组件会直接使用该任务栈中的activity对象
 * 
 * Intent的flags属性也可以指定启动模式
 * 
 * 
 * 
 * */
public class MainActivity8 extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main8);
	}
	public void start1(View view){
		Intent intent=new Intent(this,MainActivity9.class);
		startActivity(intent);
	}
	public void start2(View view){
		Intent intent=new Intent(this,MainActivity8.class);
		//相当于singleTask
		//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		//相当于singleTop
		//intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
		startActivity(intent);
	}
	
}

当前标题:android的Intent
地址分享:http://scyanting.com/article/pgjhsg.html