1. 程式人生 > >Intent與Intent Filter的使用

Intent與Intent Filter的使用

Intent的用法例項: 1.無引數Activity跳轉 Intent it=new Intent(Activity.Main.this,Activity2.class); startActivity(it); 2.向下一個Activity傳送資料(使用Bundle和Intent.putExtras) Intent it=new Intent(Activity.Main.this,Activity2.class); Bundle bundle=new Bundle(); bundle.putString(“name”,“This is from MainActivity !”); it.putExtras(bundle); startActivity(it); 對於資料的採取: Bundle bundle=getIntent().getExtras(); String name=bundle.getString(“name”); 3.向上一個Activity返回結果(使用setResult,針對startAcyivity ForResult(it,REQUEST_CODE啟動的Activity)) Intent intent=getIntent(); Bundle bundle2=new Bundle(); bundle2.putString(“name”,“This is from Show Msg !”); intent.putExtras(bundle2); setResult(RESULT_OK,intent); 4.回撥上一個Actvity的結果處理函式(onActivityResult) @Override protected void onActivity Result(int requestCode,int result Code,Intent data){ super.onActivityResult(requestCode,resultCode,data); if(requestCodeREQUEST_CODE){ if(resultCode

RESULT_CANCELED){ setTitle(“cancle”); } else if(resultCode==RESULT_OK){ String temp=null; Bundle bundle=data.getExtras(); if(bundle!=null)temp=bundle.getString(“name”); setTitle(temp); } } }

Intent的兩種用法: 1.顯式的Intent,即在構造Intent物件時就指定接受者,它一般用在知道目標元件名稱的前提下,一般是在相同的應用程式內部實現的,如下所示: Intent it=new Intent(Activity.Main.this,Activity2.class); startActivity(it); 上面的intent中,直接指明瞭接受者:Activity2 2.隱式的Intent,即Intent的傳送者在構造Intent物件時,並不知道也不關心接收者是誰,有利於降低傳送者和接收者之間的耦合,它一般用在沒有明確指出目標元件名稱的前提下,一般用於在不同應用程式之間。 Intent it =new Intent(); it setAction(“com.google.test”); startActivity(it); 上面intent,沒有明確指明接受者,只是給了一個action作為接收者的過濾條件。 Android需要解析隱式Intent,將Intent對映給可以處理此Intent的Activity.IntentReceiver或Service。 Intent解析機制主要通過查詢已註冊在Android Manifest.xml中的所有Intent,最終找到匹配的Intent。在這個解析過程中,Android是通過Intent的action、type、category這三個屬性來進行判斷的,判斷方法如下: 如果Intent指明定了action,則目標元件的IntentFilter的action列表中就必須包含有這個action,否則不能匹配; 如果Intent沒有提供type,系統將