顯式跳轉 java
在已知包名和類名的狀況下經常使用的跳轉方法: android
是 web
nt mIntent = new Intent(); 瀏覽器
mIn spa
Int 對象
etent.setClassName("com.android.settings","com.android.settings.Settings"); ci
mContext.startActivity(mIntent); it
咱們也常這麼用: io
y.class); class
startActivity(intent);
這是跳轉到當前應用的某個Activity,
Intent intent = new Intent(mContext, XXActivi
t相信你們都十分熟悉,今天主要講的是如何使用隱式intent意圖跳轉
隱式跳轉
1、隱式跳轉之Action跳轉
假定有一個Activity在清單中是這樣的聲明的:
omer_action_here"
</intent-filter>
</ac
<activity android:name=".ActionActivity";
<intent-filter
action android:name="cus
ttivity>
那麼咱們就可使用如下代碼進行跳轉到上面這個Activity中:
//建立一個隱式的 Intent 對象:Action 動做
Intent intent = new Intent();
tegory跳轉
定有一個Activity在清單中是這樣
假
//設置 Intent 的動做爲清單中指定的action
intent.setAction("customer_action_here");
startActivity(intent);
2、隱式跳轉之C
a聲明的:
<activity android:name=".CategoryActivity" >
<intent-filter>
<action android:name="customer_action_here" />
隱式的 Intent 對象:Category 類別
Intent intent = new Inte
<category android:name="customer_category_here" />
</intent-filter>
</activity>
咱們可使用以下代碼進行跳轉到以上Activity:
//建立一
個nt();
intent.setAction("customer_action_here");
//添加與清單中相同的自定義category
intent.addCategory("customer_category_here");
startActivity(intent);
3、隱式跳轉之Data跳轉
d:scheme="content"
假定有一個Activity是這樣定義的:
< activity android:name=".DataActivity">
< intent-filter>
< category android:name="android.intent.category.DEFAULT" />
< data
andro
i android:host="com.example.intentdemo"
android:port="8080"
android:pathPattern=".*pdf"
android:mimeType="text/plain"/>
< /intent-filter>
< /activity>
咱們可使用以下代碼進行跳轉:
使用,不可共用
//單獨以 setData 方法設置 UR
//建立一個隱式的 Intent 對象,方法四:Date 數據
Intent intent = new Intent();
Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf");
//注:setData、setDataAndType、setType 這三種方法只能單
獨I
//intent.setData(uri);
//單獨以 seType 方法設置 Type
//intent.setType("text/plain");
//上面分步驟設置是錯誤的,要麼以 setDataAndType 方法設置 URI 及 mime type
intent.setDataAndType(uri, "text/plain");
startActivity(intent);
startActivity(intent);
4.2 調用地圖
Uri uri = Ur
//打開地圖查看經緯度
i.
清單中的daport及如下屬性時可選的,沒有必要必定添加,可是添加了port及如下屬性的話,java代碼中的Uri中要作相應的匹配。
4、隱式跳轉之調用系統應用
4.1 使用瀏覽器瀏覽網頁
//web瀏覽器
Uri uri= Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
parse("geo:38.899533,-77.036476");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
4.3 調用電話撥號(不須要撥號權限)
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);//注意區別於下面4.4的action
startActivity(intent);
"這裏寫短信內容");
inte
4.4 調用電話直接撥號(須要撥號權限)
Uri uri = Uri.parse("tel:15980665805");
Intent intent = new Intent(Intent.ACTION_CALL, uri);//注意區別於上面4.3的aciton
startActivity(intent);
4.5 調用短信程序(無需發送短信權限,接收者自填)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body"
,nt.setType("vnd.android-dir/mms-sms");
startActivity(intent);
4.6 調用短信程序(無需發送短信權限)
Uri uri = Uri.parse("smsto:10086");//指定接收者
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "你這個黑心運營商");
startActivity(intent);
4.7 調用郵件程序
.ACTION_VIEW);
//Uri uri = Uri.parse("file:///sdc
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:xxx@gmail.com"));
intent.putExtra(Intent.EXTRA_SUBJECT, "這是標題");
intent.putExtra(Intent.EXTRA_TEXT, "這是內容");
startActivity(intent);
4.8 調用媒體播放器
Intent intent = new Intent(Inten
tard/zhy.mp3");
Uri uri = Uri.parse("file:///sdcard/a.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);
4.9 調用搜索
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "android");
startActivity(intent);
總結
相信你們通過上面的介紹,已經對Intent跳轉有了一個比較成熟的理解,Intent是組件之間的紐帶,使用它可讓系統替咱們完成不少工做,不須要咱們來指定完成工做的程序。實際上,咱們會發現,調用系統程序使用液無非是隱式跳轉,只不過使用的是系統內置的一些Action,Uri,Data等信息而已。但願對你們有所幫助.