Home 主頁 Service 服務計畫 Android App 手機程式 Expertise 專業領域 Blog 博客 Download 下載 FAQ 網頁製作常見問題 Support 支援 Links 友情連結 Contact Us 聯絡我們

6 - Implicit Intent

發佈: 08-05-2011

分類: Android 開發教學

第六課:使用Implicit intent

本文將介紹如何使用implicit intent去呼叫系統中的應用。跟explict intent不同,implicit intent是不用知道呼叫的目標。 implicit intent可reuse已安裝好的元件,而你也不須擔心它將會怎樣運作,也可以完成工作,就像一個黑盒。 那麼android系統怎麼知道什麼應用可以合乎你的要求呢?就是檢查intent filter。當我們新增一個元件後,便會到 androidManifest.xml去宣告這個元件,以及這元件的intent filter。

intent filter可設定三類資料:

  • action
  • category
  • data

當android系收到implicit intent時,就會在已安裝的應用的androidManifest.xml中查看intent filter,如找到合適的元件, 便可進行呼叫,你亦不用知道那個元件將會用什麼方式工作。如可用元件多於一個,系統便會給用戶自己選擇。由此可見,這是 runtime才會決定怎麼運行的。

我們經常會用到implicit intent,特別是一些系統上的工作,因為我們不必自行再編寫想要的功能,如發email,打電話等。

先建立一個PhoneCall的android project,打開main.xml,為它加上一個id為btnCallMe的Button,用來trigger implicit intent 呼叫。






在已自動生成的PhoneCallActivity中找出btnCallMe,於onClick中加上以下幾句:

btnCallMe = (Button)findViewById(R.id.btnCallMe);
btnCallMe.setOnClickListener(new View.OnClickListener() {

  public void onClick(View v) {
    // TODO Auto-generated method stub
    String phone = "tel:12345678";
    Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(phone));
    startActivity(i);
  }
});

可以看出我們沒有跟上一課一樣設定目標元件(class),反而設定了Intent.ACTION_CALL (action),和該action要用的data。

最後,打開androidManifest.xml,加上需要的打電話權限,即android.permission.CALL_PHONE。


Download: Source code

訪客: Copyright ©2011 KF Software House 版權所有 | 網站地圖