2015年2月13日 星期五

Android Intent 簡單筆記

在Android中有四大主要的項目
Activity、Service、Broadcast Receiver、Content Provider
而Intent就是負責和這些項目進行溝通
Intent英文直接翻中為意圖
個人解釋是讓某些東西(Data)意圖去做某些動作(Action)


Intent的主要結構就是由data和action所組成
data:被操作的資料,像是在資料庫中的連絡人資料,表達方式為Uri
action:代表要執行的動作,像是ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc


Intent的主要形式包含兩個項目
Explicit Intents:有明確的方法可使用(setComponent(ComponentName)、setClass(Context, Class)),通常不包含其他訊息,常運用在程式內部的互動
Implicit Intents:沒有指定的方法操作,但必須要有明確的資訊來指定是哪個程序來接收意圖


Intent起手式
Explicit Intents類:
首先是簡單的Activity之間的相互聯絡(切換)
一樣需先New一個Intent
Intent intent = new intent();
接著指定要聯絡哪個Activity
intent.setClass(目前的, 要聯絡的);
intent.setClass(MainActivity.this, OtherActivity.class);
startActivity(intent);


呼叫google map
Implicit Intents類:
需先有個Uri
Uri uri = Uri.parse("geo:0,0?q=" + "高雄市");
或者Uri uri = Uri.parse("geo:經緯度");
在建立Intent時指定要進行的動作和傳入資料
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);


如果需要Intent傳回處理了話
那麼startActivity();就必須改為startActivityForResult(intent, 0)
傳回處理的方法會寫在

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  //傳回的處理寫在這裡
}



References:
Intent 用法大公開
Activity之间的数据传递_Intent和startActivityForResult的使用

沒有留言:

張貼留言