標籤:
使用Intent和IntentFilrter進行通訊,Intent分為顯和隱式意圖,顯不用配置。
一般在同一個應用程式優先使用顯,因為效率較高。
Intent是Android用於封裝的意圖,不管想啟動一個新的Activity還是Service或者是BroadcastReceiver,都需要
Intent來作為橋樑。
Intent包含了七大屬性:
Component,Category,Action,Data,Type,Extra和Flag,其中Component用於明確指定需要啟動的目標組件。
Extra用於攜帶需要交換的資料。
以下是詳細的介紹:
//顯示Intent 和隱式Intent。
啟動新的Activity。
//注意:新的activity 一定要在Manifest檔案裡進行配置
Intent intent = new(MainActivity.this,SecondActivity.class);//.class尾碼不能忘記
startActivity(intent);
一個顯示Intent對象最多隻能包含一個Action屬性,卻可以包含多個Category屬性。
setAction(String str); addCategory(String str);
顯必須指定開啟的組件的具體資訊(包名 組件名 組件的Class)。
可以用intent來調用系統的其他應用。如網路設定本地相簿,注意添加許可權。
Intent intent = new intent("packagename","classname ");
startActivity(intent);//注意配置Activity。
//小華華的視頻講的很不錯。
顯不用配置。
隱式意圖:顯的耦合性比較差,
描述動作的行為。
Intent intent = new Intent();
intent.setAction();//系統預設了很多動作類型。
intent.setData(Uri data);
startActivity(intent);
//需要
//一個activity 可以配置多個intent-filter,只要滿足其中的一個意圖就可以調用。
一個隱式intent還可以設定多個動作 ,只要滿足其中的一個那麼就可以調用。
同一個應用程式裡面,自己啟用自己的東西,推薦使用顯,效率高。
不同的程式裡,啟用別人的應用,或者是讓自己的某一個介面希望被別人啟用
推薦使用隱士意圖。
使用隱士意圖時
1.查詢系統裡面所有的activity看看是不是有滿足條件的activity。
2.如果只有一個則直接使用,但是如果有多個符合的activity那麼列表顯示
3.如果沒有那麼拋出異常。activity not found exception.
從一個activity往另外一個activity 裡傳人資料:
Intent intent = new Intent(this, secondActivity.class);
intent.putExtra("name",name);
//八大基本的資料都能傳遞過去包括String類型,key-values的形成儲存資料
startActivity(intent);
--------------------------------------------------------------------------
在secondActivity的onCreate()裡:
Intent intent = getIntent();
String name = intent.getStringExtra("name");
Android之Intent