package com.itheima.jump; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 跳转至打电话activity * 跳转至其他应用的activity * 隐式跳转:通过指定action和data * @param v */ public void click1(View v){ Intent intent = new Intent(); //隐式意图 intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:110")); tel是安卓默认的打电话Activity的前缀 //跳转 startActivity(intent); } /** * 跳转至secondActivity * 在本应用中跳转 * @param v */ public void click2(View v){ Intent intent = new Intent(); //cls:直接指定目标Activity的类名 //显示意图 intent.setClass(this, SecondActivity.class);//字节码 startActivity(intent); } /** * 显示跳转至拨号器 */ public void click3(View v){ Intent intent = new Intent(); //指定目标Activity的包名和类名,如果Activity所在的包跟应用包名(com.android.dialer)同名,那么可以省略不写 intent.setClassName("com.android.dialer", ".DialtactsActivity"); startActivity(intent); } /** * 隐式跳转至拨号器 */ public void click4(View v){ Intent intent = new Intent(); //隐式设置拨号器的动作 intent.setAction(Intent.ACTION_DIAL); startActivity(intent); } /** * 隐式跳转至secondActivity * @param v */ public void click5(View v){ Intent intent = new Intent(); intent.setAction("com.itheima.sa2"); //匹配<action android:name="com.itheima.sa2"/> /* intent.setData(Uri.parse("heima2:qwe")); 匹配android:scheme="heima2" intent.setType("text/username"); 匹配android:mimeType="text/username" */ intent.setDataAndType(Uri.parse("heima2:qwe123"), "text/username"); //系统会自动添加默认的category intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent); } /** * 显式跳转至浏览器 */ public void click6(View v){ Intent intent = new Intent(); //com.android.browser是包名这里是安卓自带的浏览器,com.android.browser.BrowserActivity是类名 intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity"); startActivity(intent); } /** * 隐式跳转至浏览器,这里是隐士的启动,可以启动别的浏览器程序(例如360浏览器不是安卓默认的浏览器是跨应用调用Activity),那么这里会让你选择启动哪个浏览器。 * @param v */ public void click7(View v){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW);//没有指明调用哪个浏览器 intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent); } }
清单文件:
<activity android:name=".SecondActivity"> <intent-filter > <action android:name="com.itheima.sa"/> <action android:name="com.itheima.sa3"/> <data android:scheme="heima"/> java类里面前面也要指明data,并且前缀是heima <data android:scheme="heima3"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> <intent-filter > <action android:name="com.itheima.sa2"/> <data android:scheme="heima2" android:mimeType="text/username"/> mimeType是数据的类型 <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
###显式意图和隐式意图的应用场景
* 显式意图用于启动同一应用中的Activity
* 隐式意图用于启动不同应用中的Activity
* 如果系统中存在多个Activity的intent-filter同时与你的intent匹配,那么系统会显示一个对话框,列出所有匹配的Activity,由用户选择启动哪一个