Intent intent=new Intent(this,SecondActivity.class);
其實這部操作等于
CompontentName comp=new ComponentName(this,ScondActivity.class);
Intent intent=new Intent();
intent.setCompontent(comp)
其實第一種也要實現CompontentName這一步的,如果是在匿名內部類是不能用this的,就得XxxActivity.this
當intent用于啟動Activity時,intent是啟動和被啟動倆個Activity所共有的intent,
所以在第一個Activity設置了intent的屬性后,在第二個Activity是可以用getIntent.get屬性()去獲取這個intent的屬性值
而不是一個Activity對應一個intent
intent的屬性
Intent的Action和Category屬性是一個普通的字符串,其中Action代表該intent
要完成一個抽象“動作”,而Category(種類)則用于為Action添加額外附加類別信息。
通常他們兩個屬性結合使用
Action要完成的只是一個抽象的動作,這個動作具體由哪個組件來實現,組件也就是
Activity,Service等,Action這個字符串本身并不管,而是取決與Activity的<intent-filter/>
過濾器這個東西,這是隱式intent,我們在一個活動中設置了intent的Action和Categroy屬性值(當然還有其他屬性),然后系統就會去
分析這個intent,找到其他合適的活動去啟動。而且這不僅可以啟動我們程序內的活動,還可以啟動其他程序內的活動,假如我們
要通過點擊我們活動里的一個按鈕,然后讓它啟動一個瀏覽器,我們不可能去寫一個瀏覽器出來,我們就可以通過
這種隱式的方法去啟動安卓內置的瀏覽器,是用intent的其他屬性Data去設置的。
然后我們在活動設置了intent的屬性之后,那么我們怎么讓其他活動滿足這個intent的屬性,然后被啟動呢?
這時我們就得在希望被啟動的Activity所在的程序的AndroidManifest.xml里映射的我們要被啟動的Activity中
假設我們要點擊第一個活動中的一個按鈕啟動下面這個SecondActivity
我們就得在里面設置過濾器
<activity
android:name="com.ljs.intent.SecondActivity"
android:label="@string/app_name" >
//過濾器
<intent-filter>
<action android:name="android.intent.action.MAIN" />
//action和category的值可以隨便取,但是最好還是android.intent.action.xxx
//這個MAIN和LAUNCHER是運行這個apk的首個顯現的Activity,可以改成其他的。
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最后action只能設置一個,category可以設置多個