1 Intent
intent 是Android程序中各組件之間進行交互的一種重要方式糕档,它不僅可以致命當前組件想要執(zhí)行的動作,還可以在不同組件之間傳遞數(shù)據(jù)速那,Intent一半可以被用于啟動活動,啟動服務(wù)端仰,以及發(fā)送廣播等。
Intent分為顯示意圖和隱式意圖吱七,
- 顯示意圖直接指定了要打開哪一個Activity(或者廣播,服務(wù)等)踊餐;
- 而隱式意圖則是通過IntentFilter來過濾要打開Activity(或者廣播,服務(wù)等)吝岭,
IntentFilter中的參數(shù)包括 action category data
- action 指明當前活動可以相應(yīng)的ACTION
- category 中包含了一些附加信息烁涌,如果不配置category的話苍碟,默認是DEFAULT
** 每個Intent中只可以指定一個action撮执,但是可以指定多個category舷丹, - data標簽中可以配置的屬性有如下:
1) android:scheme: 用于指定數(shù)據(jù)的協(xié)議部分抒钱,如下面例子中的http部分
2)android:host: 用于指定數(shù)據(jù)的主機名部分,如下面例子中的www.baidu.com部分
3)android:port: 用于指定數(shù)據(jù)的端口部分仗扬,一半緊隨在主機名后面
4)android:path: 用于指定主機名和端口之后的部分,如一段網(wǎng)址中跟在域名之后的內(nèi)容
5)android:mimeType: 用于指定可以處理的數(shù)據(jù)類型早芭,允許使用通配符的方式進行指定。
只有data標簽中指定的內(nèi)容和Intent中攜帶的Data內(nèi)容完全一致時退个,當前活動才能夠相應(yīng)改Intent调炬,不過一半在Data標簽中都不會指定過多的內(nèi)容语盈,如下面示例中缰泡,其實只需要指定scheme為http,就可以相應(yīng)所有的http協(xié)議的Intent了棘钞,(單純指定scheme的demo沒寫出來)
2 使用隱式意圖打開百度頁面
下面的代碼實現(xiàn)的效果是: 通過點擊menu菜單中的add選項,就可以打開百度首頁
@Override //處理menu條目的點擊事件
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_menu_add:
// 通過隱式意圖開啟百度首頁
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
break;
case R.id.item_menu_delete:
//具體的邏輯代碼
Toast.makeText(MainActivity.this, "delete條目被點擊", Toast.LENGTH_SHORT).show();
break;
}
return true;
}