編輯:開發入門
開啟網頁
我們已經對 Android 應用程序的寫法有了概觀的認識。可是我們還沒有觸及 android 平台的特別之處:整合網絡的應用。
在上一章中,我們學到如何使用對話框,與如何在對話框下添加按鈕,以回到原畫面。在這一章裡,我們來為我們的應用程序添加一個簡單的網路功能:在上一章實做的 "openOptionsDialog" 對話框函數中,新添一個 " 連線到首頁 " 的按鈕。
我們先把 "openOptionsDialog" 函數中使用到的字串增加到 "res/values/string.xml" 裡。因此完整的 "res/values/string.XML" 檔桉如下:
代碼 :
1 <?XML version="1.0" encoding="utf-8"?>
2 <resources>
3 <string name="app_name">BMI</string>
4 <string name="height"> 身高 (cm)</string>
5 <string name="weight"> 體重 (kg)</string>
6 <string name="bmi_btn"> 計算 BMI 值 </string>
7 <string name="bmi_result"> 你的 BMI 值是 </string>
8
9 <string name="about_title"> 關於 android BMI</string>
10 <string name="about_msg">android BMI Calc 0.6\n
11 作者 gasolin\n
12 gasolin+android [at] gmail.com</string>
13 <string name="ok_label"> 確認 </string>
14 <string name="homepage_label"> 首頁 </string>
15 </resources>
增加了 " 連線到首頁 " 按鈕,完整 "openOptionsDialog" 函數的新版程序碼如下:
代碼 :
1 private void openOptionsDialog() {
2 new AlertDialog.Builder(this)
3 .setTitle(R.string.about_title)
4 .setMessage(R.string.about_msg)
5 .setPositiveButton(R.string.ok_label,
6 new DialogInterface.OnClickListener(){
7 public void onClick(
8 DialogInterface dialoginterface, int i){
9 }
10 })
11 .setNegativeButton(R.string.homepage_label,
12 new DialogInterface.OnClickListener(){
13 public void onClick(
14 DialogInterface dialoginterface, int i){
15 //go to url
16 Uri uri = Uri.parse("http://androidbmi.googlecode.com/");
17 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
18 startActivity(intent);
19 }
20 })
21 .show();
22 }
講解
在上一章 "openOptionsDialog" 函數的基礎上,我們在函數中添加了一個 "setNegativeButton" 方法,以提供另一個 "NegativeButton" 按鈕。
代碼 :
.setNegativeButton(R.string.homepage_label,
new DialogInterface.OnClickListener(){
public void onClick(
DialogInterface dialoginterface, int i){
.....
}
})
與上一章我們將 DialogInterface 中的內容空白不同的是,我們為這個按鈕添加了連線到特定網址 ( 首頁 ) 的 " 動作 " ,當使用者按下 " 首頁 " 按鈕後,程序會開啟浏覽器,並連線到本專桉的首 頁 "http://androidbmi.googlecode.com/" 。
要完成整個連線的 " 動作 " 只需要三行程序碼:
代碼 :
//go to url 這是注解
Uri uri = Uri.parse("http://androidbmi.googlecode.com/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
以下是分行詳細的講解:
代碼 :
Uri uri = Uri.parse("http://androidbmi.googlecode.com/");
建立一個 Uri 實體,裡面包含我們要連到的網址 "http://androidbmi.googlecode.com/" 。
在我們第一次在程序碼中加入 "Uri" 時敘述時, "Uri" 下方會出現紅色的線,表示 "Uri" 可能是個需要由外部導入( import )的函數或類別。 在 "Eclispe" 開發環境中,我們可以使用 "ctrl-shift-O" ( Windows )或 "cmd-shift-O" ( Mac )來自動在程序開頭 的地方導入 "android.Net.Uri" 函數庫。
代碼 :
startActivity(intent);
透過 "startActivity" 函數, android 系統即根據收到不同 " 意圖 "(Intent) 的動作和內容,開啟對應的新頁面或新程序。
在 android 平台上,各個 Activity 之間的呼叫與交流都要透過 "startActivity" 一類的函數來互動。 "startActivity" 一類的函數中,最重要需傳入的內容就是 " 意圖 "(Intent) 。因此我們在後面會進一步闡述 "Intent" 與 "Activity" 之間的關係。
代碼 :
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
在這行中,我們建立一個 " 意圖 "(Intent) 實體,並傳入這個意圖的 " 動作 " 與 " 內容 " 。 Intent 的格式如下:
代碼 :
Intent intent = new Intent( 動作 , 內容 );
我們所建立 " 意圖 "(Intent) 中,所傳入的 " 動作 " 是 "Intent.ACTION_VIEW" 。 "Intent.ACTION_VIEW" 是 android 內建的 " 動作 " 之一。在 Eclipse 編輯畫面中輸入 "Intent." 時, Eclipse 編輯器會彈出可輸入的建議動作選單,我們可以透過這個選單,了解可使用的各種 Intent 內建動作。
"Intent.ACTION_VIEW" 這個動作的意義為:依所提供內容的不同,開啟對應的程序以檢視內容資料。我們可以把這個動作想成在一般桌面系統上,開啟一個已知的檔桉類型檔桉 ( 比如說一 張照片 ) ,操作系統會用你預設的應用程序 ( 比如說某看圖軟件 ) 開啟這個檔桉。本例中提供了 "Uri" 網址類型的內容 給 "Intent.ACTION_VIEW" 這個動作,所得到的結果,就是開啟浏覽器並前 往 "http://androidbmi.googlecode.com/" 頁面。
再做好一點
前面我們看到 Uri 實體的定義方法:
代碼 :
Uri uri = Uri.parse("http://androidbmi.googlecode.com/");
看到 Uri.parse() 中,有一個固定的網址,你應該也會想把它抽取出來,丟到 Resource 中統一管理。那麽我們把程序改寫,首先把網址抽取出來,放到 "res/values/string.xml" 檔桉中。 "res/values /string.XML" 檔桉更新如下:
代碼 :
...
<string name="homepage_label"> 首頁 </string>
<string name="homepage_uri">http://androidbmi.googlecode.com/</string>
我們把 Uri.parse() 函數修改,傳入資源識別符號 .
代碼 :
Uri uri = Uri.parse(R.string.homepage_uri);
糟了, Eclipse 上出現了紅線,表示在我們的程序碼裡,有什麽地方弄錯了。 因為我們只修改了 Uri.parse 傳入的內容,我們可以很確定是我們傳入的內容錯了。 我們重新輸入 "Uri." ,利用 Eclipse 的自動提示功能,看看 parse 函數到底接受那些類別的參數。 原來, Uri.parse() 函數並不接受資源識別符號型態的輸入。這麽一來,我們就得自行根據資源識別符號,來取得資源識別符號所代表的文字敘述內容。 真正能執行的程序碼如下:
代碼 :
Uri uri = Uri.parse(getString(R.string.homepage_uri));
在程序中,我們可以使用 "android.content.Context" 類別中的 "getString" 函數 ( 或是 getText) ,來取得資源識別符號對應的文字。
New Message 頁面在 8.0.2 版本中,將針對用戶的個人聯系列表和企業名錄對 ultra-light 模式下發送的消息中的電子郵件地址進行檢查,如果可以的話
現在采用安卓系統的手機和平板電腦那是越來越多了,總是聽別人說安卓系統如何如何好,相信大家也想體驗一下安卓系統的獨特魅力吧!不過對於大多數手頭並不寬裕的朋友來說,僅僅為嘗
和android UI layout一樣,我們也可以在XML中定義應用程序的菜單。通過在菜單的onCreateOptionsMenu方法中膨脹菜單layout
所需的工具開始開發 Android 應用程序的最簡捷的方式是下載 android SDK 和 Eclipse IDE(參見 參考資料)。android 開發可