intent 目的,意圖 ,意義,含義(a.)熱心的,專心致志的
Android intent 在Android來說,intent是常用到的方法,導頁好幫手,主要幫助我們在傳值、轉化畫面等等,像是意圖辦到什麼目的,前往哪個目的地的概念 
但除了導頁功能之外,intent能做到的事情不只這些唷,先以導頁做舉例與方法使用說明 …
intent分為兩種:顯式(Explicit intent)和隱式(Implicit intent)。
假設今日我們要從FirstActivity.class轉換到GoalActivity.class
1. 顯示(Explicit) 直接指定確定 要一個 轉換的目標Activity,意圖明顯,所以稱為顯示意圖(Explicit intent)。常用於應用程式內部頁面之間轉換之用。 
例如,在FirstActivity.java指定需要轉換到GoalActivity.java,直接在FirstActivity.java正確位置寫上下面程式碼。很多種可替代的寫法,所以選自己習慣的寫法就行囉!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //1.  目標Activity可直接以package.class 路徑表示。 Intent  intent  = new Intent (FirstActivity.class ,"com.bird.intenttext.GoalActivity" )startActivity(intent ); 		 //2.  目標Activity簡化表示 Intent  intent  = new Intent (FirstActivity.this,  GoalActivity.class )startActivity(intent );  //3.  this 取代 FirstActivity.class  Intent  intent  = new Intent (this,  GoalActivity.class )startActivity(intent );  //4.  setComponent:ComponentName取代 ComponentName CPName = new ComponentName(this,  GoalActivity.class );   Intent  intent  = new Intent ();  intent .setComponent(CPName);  startActivity(intent ); //5.  setClass:ClassName取代 Intent  intent  = new Intent ();intent .setClassName(this,  GoalActivity.class );startActivity(intent ); 
 「重要」 最後一定要記得在 AndroidManifest.xml 文件中<application></application> 之中,註冊欲前往的目標Activity。
 
範例如下
1 2 3 4 5 6 7 8 9 <activity  android:name ="com.bird.intenttext.GoalActivity"  			... > 	<intent-filter >  		<action  ... />  		<category  ... />  		<data  ... />  	</intent-filter >  	<meta-data  ... />  </activity > 
2. 隱示(Implicit intent) 相對顯示來說,隱示就是間接指定 囉!就是讓系统幫你篩選出適合的目標Activity,根據来篩選。透過AndroidManifest.xml文件幫助我們完成這件事情。 
舉例來說,在AndroidManifest.xml文件中,註冊欲前往的目標Activity時,將內容修改內容如下:
1 2 3 4 5 6 7 8 <activity  	android:name ="com.bird.intenttext.GoalActivity" > 	<intent-filter >  		//可自訂android:name字串內容 		<action  android:name ="com.bird.intenttext.GotoGoalActivity" />   		<category  android:name ="android.intent.category.DEFAULT" />  	</intent-filter >  </activity > 
在FirstActivity.java指定需要轉換到GoalActivity.java,直接在FirstActivity.java正確位置寫上下面程式碼。
1 2 3 4 5 6 Intent  intent  = new Intent ("GotoGoalActivity" );startActivity(intent );  // or 將Activity定義為Action ,使用setAction Intent  intent  = new Intent ();  intent .setAction("com.bird.intenttext.GotoGoalActivity" );  startActivity(intent ); 
外部轉換 另外,隱示最厲害的地方就是用於與外部應用程式間的Activity轉換 ,讓Action ,表明自己的意圖,由系統解析,找到能夠處理這個Intent的Activity並啟動。
例如
"android.intent.action.DIAL": 表示當你有撥打電話的意圖時,系統會呼叫Activity該讓使用者選擇使用。
範例1:表示GoalActivity有撥打電話的功能意圖可被呼叫
1 2 3 4 5 6 7 8 <activity  	android:name ="com.bird.intenttext.GoalActivity" > 	<intent-filter >  		//可自訂android:name字串內容: 建議將其完整命名package.class 		<action  android:name ="android.intent.action.DIAL" />   		<category  android:name ="android.intent.category.DEFAULT" />  	</intent-filter >  </activity > 
範例2:該Activity需呼叫別的意圖功能
1 2 3 Intent  intent  = new Intent (Intent .ACTION_DIAL);  // 或者Intent  intent  = new Intent ("android.intent.action.DIAL" ); startActivity(intent ); 
安全機制 有時候會因為AndroidManifest.xml中忘記註冊或字串打錯等原因,找不到對應的Activity,便會拋出ActivityNotFoundException的錯誤訊息,為防止App出錯關閉無法運行,因此我們要設立對應的安全機制。
方法1:try catch
1 2 3 4 5 6 Intent intent = new  Intent("GotoGoalActivity" ); try {	startActivity(intent);  }catch (ActivityNotFoundException e){ 	 Toast.makeText(this , "找不到对应的Activity" , Toast.LENGTH_SHORT).show();   } 
方法2:使用Intent的resolveActivity方法判斷這個Intent是否能找到合適的Activity
1 2 3 4 5 6 Intent  intent  = new Intent (Intent .ACTION_DIAL); if (intent .resolveActivity(getPackageManager()) == null)  {      // 设置控件不可用    } startActivity(intent ); 
方法3:多個Activity可供選擇的話,則返回的Component是com.android.internal.app.ResolverActivity,也就是用戶選擇Activity的那個界面對應的Activity,這裡不再深究。
1 2 3 4 5 6 7 Intent  intent  = new Intent (Intent .ACTION_DIAL);  ComponentName componentName = intent .resolveActivity(getPackageManager());   if (componentName {       String className = componentName.getClassName();      	Toast.makeText(this, className, Toast.LENGTH_SHORT).show();   } 
參考來源 
Android理解:显式和隐式Intent - 叉叉哥的BLOG - 博客频道 - CSDN.NET Android Developrs-intent Android工程師路徑圖的標題 職業路徑圖IT職業在線教育平台 極客學院  
                        
                            
                        
                        
                            
                                
                                    Comment and share