使用隱式意圖不僅可以啟動(dòng)自己程序中的Activity,還可以啟動(dòng)其它程序中Activity拇舀,這使得程序之間可以共享某些功能。例如一個(gè)程序需要展示頁面,而這時(shí)又沒必要寫一個(gè)瀏覽器滓窍,直接調(diào)用系統(tǒng)中的瀏覽器打開網(wǎng)頁即可。接下來通過隱式意圖來實(shí)現(xiàn)打開系統(tǒng)瀏覽器的功能巩那,具體步驟如下吏夯。
1.創(chuàng)建程序
創(chuàng)建一個(gè)名為OpenBrowser的應(yīng)用程序,指定包名為cn.itcast.openbrowser,設(shè)計(jì)用戶交互界面即横,預(yù)覽效果圖如下:
對(duì)應(yīng)的布局具體代碼如下:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/openbrowser"
tools:context=".MainActivity">
<Button
android:id="@+id/main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/click"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="30dp"
/>
</RelativeLayout>
2.編寫界面交互代碼
在MainActivity中噪生,通過隱式意圖打開系統(tǒng)的瀏覽器訪問百度頁面,具體代碼如下:
MainActivity.java
package com.czt.openbrowser;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.main_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
//設(shè)置動(dòng)作為android.intent.action.VIEW
intent.setAction("android.intent.action.VIEW");
//設(shè)置要打開的網(wǎng)址
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
}
}
在上述代碼中东囚,通過setAction()設(shè)置需要開啟Activity的動(dòng)作為“android.intent.action.VIEW”,這是一個(gè)Android系統(tǒng)內(nèi)置的方法將一個(gè)網(wǎng)址字符解析成Uri.parse()方法將一個(gè)網(wǎng)址字符串解析成Uri對(duì)象跺嗽,再調(diào)用Intent的setData()方法將這個(gè)Uri對(duì)象傳遞進(jìn)去。
運(yùn)行程序
單擊“點(diǎn)擊進(jìn)入”按鈕页藻,此時(shí)會(huì)打開百度頁面桨嫁,運(yùn)行結(jié)果如下: