Intent的启动

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
显示意图启动

	public void explicit(View view){
//		1).先创建意图对象然后制定开启的activity
		Intent intent = new Intent();
//		1.使用当前环境
		intent.setClass(this, otherActivity.class);
//		2.指定包名和类名
		intent.setClassName("com.zls.intentabout", "com.zls.intentabout.otherActivity");
//		3.包名用this代替
		intent.setClassName(this, "com.zls.intentabout.otherActivity");
		
//		2)创建意图的时候直接指定
		Intent intent = new Intent(this, otherActivity.class);
		startActivity(intent);
	}



隐式意图, 通过动作, 数据等设置打开Activity, 程序中并不指定一个类
public void implicit(View view){
		/*
		  打电话
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:18600012345"));
		startActivity(intent);
		 */
		
		/*
		  打开网页
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.setData(Uri.parse("http://www.baidu.com"));
		startActivity(intent);
		 */
		
		/*打开图片
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.parse("file://mnt/sdcard/img.jpg"), "image/*");
		startActivity(intent);
		*/
		
		
		/*打开音乐
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.parse("file://mnt/sdcard/mu.mp3"), "audio/*");
		startActivity(intent);
		*/
		
		/*打开视频
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.parse("file://mnt/sdcard/di.mp4"), "video/*");
		startActivity(intent);
		 */
		
	}


在开启一个新的activity的时候,我们可以往里面传数据
public void sendData(View view)
	{
		Intent intent = new Intent(this,otherActivity.class);
		//1.形式一
		intent.putExtra("name", "张三");
		intent.putExtra("age", 20);
		//2.形式二
		Bundle b1 = new Bundle();
		b1.putInt("age", 20);
		b1.putString("name", "张三");
		intent.putExtra("b1", b1);
		
		startActivity(intent);					// 开启Activity,不接受返回的数据
//		startActivityForResult(intent, 100);	// 开启Activity, 并接收返回的数据(在新Activity关闭的时候执行onActivityResult方法)100是请求码
	}



/**
* @param requestCode startActivityForResult方法中传入的int值, 用来区别哪里开启的
* @param resultCode setResult方法中传入的int值, 用来区别哪里返回的
* @param data setResult方法中返回的Intent对象
*/

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		String name = data.getStringExtra("name");
		int age = data.getIntExtra("age", -1);
		super.onActivityResult(requestCode, resultCode, data);
	}


otherActivity中代码
public class otherActivity extends Activity {
	//第一种
	Intent intent = getIntent();
//	String name = intent.getStringExtra("name");
//	Integer age = intent.getIntExtra("age", -1);
	
	//第二种
	Bundle b1 = intent.getBundleExtra("b1");
	String name = b1.getString("name");
	Integer age = b1.getInt("age");
}


最后记得在配置清单中加入activity
<activity android:name=".otherActivity" android:label="新的Activity" >
        	<intent-filter >
                       	   
                <action android:name="android.intent.action.CALL" />        	   
				<action android:name="android.intent.action.VIEW" />        	   
				<data android:scheme="tel" />
				<data android:scheme="http" />
				<data android:scheme="file" android:mimeType="image/*" />
				<data android:scheme="file" android:mimeType="audio/*" />
				<data android:scheme="file" android:mimeType="video/*" />
				<category android:name="android.intent.category.DEFAULT" /> 
        	</intent-filter>    
        </activity>

猜你喜欢

转载自zhonglunshun.iteye.com/blog/1974014