97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android開(kāi)發(fā)之使用Intent隱式啟動(dòng)Activity  
 
Android開(kāi)發(fā)之使用Intent隱式啟動(dòng)Activity
分享到:

隱式啟動(dòng)Activity時(shí),Android系統(tǒng)在應(yīng)用程序運(yùn)行時(shí)解析Intent,并根據(jù)一定的規(guī)則對(duì)Intent和Activity進(jìn)行匹配,使Intent上的動(dòng)作、數(shù)據(jù)與Activity完全吻合。而匹配的Activity可以是應(yīng)用程序本身的,也可以是Android系統(tǒng)內(nèi)置的,還可以是第三方應(yīng)用程序提供的。因此,這種方式更強(qiáng)調(diào)了Android應(yīng)用程序中組件的可復(fù)用性。

由此可以看出,隱式啟動(dòng)不需要指明需要啟動(dòng)哪一個(gè)Activity,而由Android系統(tǒng)來(lái)決定,有利于使用第三方組件。

在默認(rèn)情況下,Android系統(tǒng)會(huì)調(diào)用內(nèi)置的Web瀏覽器,代碼如代碼清單6-5所示。

代碼清單6-5 隱式啟動(dòng)默認(rèn)情況調(diào)用內(nèi)置Web瀏覽器


Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    startActivity(intent);

在上述代碼中,Intent的動(dòng)作是Intent.ACTION_VIEW,是根據(jù)Uri的數(shù)據(jù)類(lèi)型來(lái)匹配動(dòng)作;數(shù)據(jù)部分的Uri是Web地址,使用Uri.parse(urlString)方法,可以簡(jiǎn)單地把一個(gè)字符串解釋成Uri對(duì)象。

Intent的語(yǔ)法如代碼清單6-6所示。

代碼清單6-6 Intent語(yǔ)法


Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString));

Intent構(gòu)造函數(shù)的第1個(gè)參數(shù)是Intent需要執(zhí)行的動(dòng)作;第2個(gè)參數(shù)是Uri,表示需要傳遞的數(shù)據(jù)。

Android系統(tǒng)支持的常見(jiàn)動(dòng)作字符串常量表,如表6-3所示。

表6-3 Android系統(tǒng)支持的常見(jiàn)動(dòng)作字符串常量表

動(dòng) 作 說(shuō) 明
ACTION_ANSWER 打開(kāi)接聽(tīng)電話的Activity,默認(rèn)為Android內(nèi)置的撥號(hào)盤(pán)界面
ACTION_CALL 打開(kāi)撥號(hào)盤(pán)界面并撥打電話,使用Uri中的數(shù)字部分作為電話號(hào)碼
ACTION_DELETE 打開(kāi)一個(gè)Activity,對(duì)所提供的數(shù)據(jù)進(jìn)行刪除操作
ACTION_DIAL 打開(kāi)內(nèi)置撥號(hào)盤(pán)界面,顯示Uri中提供的電話號(hào)碼
ACTION_EDIT 打開(kāi)一個(gè)Activity,對(duì)所提供的數(shù)據(jù)進(jìn)行編輯操作
ACTION_INSERT 打開(kāi)一個(gè)Activity,在提供數(shù)據(jù)的當(dāng)前位置插入新項(xiàng)
ACTION_PICK 啟動(dòng)一個(gè)子Activity,從提供的數(shù)據(jù)列表中選取一項(xiàng)
ACTION_SEARCH 啟動(dòng)一個(gè)Activity,執(zhí)行搜索動(dòng)作
ACTION_SENDTO 啟動(dòng)一個(gè)Activity,向數(shù)據(jù)提供的聯(lián)系人發(fā)送信息
ACTION_SEND 啟動(dòng)一個(gè)可以發(fā)送數(shù)據(jù)的Activity
ACTION_VIEW 常用的動(dòng)作,對(duì)以Uri方式傳送的數(shù)據(jù),根據(jù)Uri協(xié)議部分以佳方式啟動(dòng)相應(yīng)的Activity進(jìn)行處理。對(duì)于http:address將打開(kāi)瀏覽器查看;對(duì)于tel:address將打開(kāi)撥號(hào)呼叫指定的電話號(hào)碼
ACTION_WEB_SEARCH 打開(kāi)一個(gè)Activity,對(duì)提供的數(shù)據(jù)進(jìn)行Web搜索

以下將通過(guò)一個(gè)WebViewIntentDemo示例來(lái)了解如何隱式啟動(dòng)Activity。

如圖6-3所示,當(dāng)用戶(hù)在文本框中輸入要訪問(wèn)的網(wǎng)址后,通過(guò)單擊“Go”按鈕,程序根據(jù)用戶(hù)輸入的網(wǎng)址生成一個(gè)Intent,并以隱式啟動(dòng)的方式調(diào)用Android內(nèi)置的Web瀏覽器,并打開(kāi)指定的Web頁(yè)面。本例輸入的網(wǎng)址是google主頁(yè)的主站地址,地址是://www.google.com。

    
圖6-3 隱式啟動(dòng)Activity

其中,main.xml代碼如代碼清單6-7所示。

代碼清單6-7 main.xml


<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <EditText
        android:id="@+id/url_field"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:lines="1"
        android:inputType="textUri"
        android:imeOptions="actionGo" />
    <Button
        android:id="@+id/go_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/go_button" />
    </LinearLayout>

其中,strings.xml代碼如代碼清單6-8所示。

代碼清單6-8 strings.xml


<?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="app_name"> WebViewIntentDemo </string>
    <string name="go_button">Go</string>
    </resources>

WebViewIntentDemo.java代碼如代碼清單6-9所示。

代碼清單6-9 WebViewIntentDemo.java


import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnKeyListener;
    import android.widget.Button;
    import android.widget.EditText;

    public class WebViewIntentDemo extends Activity {
        private EditText urlText;
        private Button goButton;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            // Get a handle to all user interface elements
            urlText = (EditText) findViewById(R.id.url_field);
            goButton = (Button) findViewById(R.id.go_button);

            // Setup event handlers
            goButton.setOnClickListener(new OnClickListener() {
                public void onClick(View view) {
                    openBrowser();
                }
            });

            urlText.setOnKeyListener(new OnKeyListener() {
                public boolean onKey(View view, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_ENTER) {
                        openBrowser();
                        return true;
                    }
                    return false;
                }
            });
        }
    }

在上述代碼中第26行對(duì)按鈕“Go”添加監(jiān)聽(tīng),當(dāng)觸摸單擊或通過(guò)手機(jī)按鍵單擊該按鈕時(shí),觸發(fā)openBrowser()方法。其中,openBrowser()方法代碼如代碼清單6-10所示。

代碼清單6-10 openBrowser()方法


/** Open a browser on the URL specified in the text box */
    private void openBrowser() {
        Uri uri = Uri.parse(urlText.getText().toString());
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }

 更多相關(guān)文章

·如何使用Intent顯式啟動(dòng)Activity?
·Android開(kāi)發(fā)中Intent屬性詳解
·Android Activity 四種啟動(dòng)模式的區(qū)別
·Android Activity的四種啟動(dòng)模式
·Activity的生命周期回調(diào)方法