显示意图启动
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>