Intent intent=new Intent(this,SecondActivity.class);
其實(shí)這部操作等于
CompontentName comp=new ComponentName(this,ScondActivity.class);
Intent intent=new Intent();
intent.setCompontent(comp)
其實(shí)第一種也要實(shí)現(xiàn)CompontentName這一步的,如果是在匿名內(nèi)部類是不能用this的拱层,就得XxxActivity.this
當(dāng)intent用于啟動Activity時(shí),intent是啟動和被啟動倆個(gè)Activity所共有的intent蟋恬,
所以在第一個(gè)Activity設(shè)置了intent的屬性后悲伶,在第二個(gè)Activity是可以用getIntent.get屬性()去獲取這個(gè)intent的屬性值
而不是一個(gè)Activity對應(yīng)一個(gè)intent
intent的屬性
Intent的Action和Category屬性是一個(gè)普通的字符串温艇,其中Action代表該intent
要完成一個(gè)抽象“動作”肠虽,而Category(種類)則用于為Action添加額外附加類別信息醉者。
通常他們兩個(gè)屬性結(jié)合使用
Action要完成的只是一個(gè)抽象的動作,這個(gè)動作具體由哪個(gè)組件來實(shí)現(xiàn)窥岩,組件也就是
Activity甲献,Service等,Action這個(gè)字符串本身并不管颂翼,而是取決與Activity的<intent-filter/>
過濾器這個(gè)東西晃洒,這是隱式intent,我們在一個(gè)活動中設(shè)置了intent的Action和Categroy屬性值(當(dāng)然還有其他屬性)疚鲤,然后系統(tǒng)就會去
分析這個(gè)intent锥累,找到其他合適的活動去啟動缘挑。而且這不僅可以啟動我們程序內(nèi)的活動集歇,還可以啟動其他程序內(nèi)的活動,假如我們
要通過點(diǎn)擊我們活動里的一個(gè)按鈕语淘,然后讓它啟動一個(gè)瀏覽器诲宇,我們不可能去寫一個(gè)瀏覽器出來,我們就可以通過
這種隱式的方法去啟動安卓內(nèi)置的瀏覽器惶翻,是用intent的其他屬性Data去設(shè)置的姑蓝。
然后我們在活動設(shè)置了intent的屬性之后,那么我們怎么讓其他活動滿足這個(gè)intent的屬性吕粗,然后被啟動呢纺荧?
這時(shí)我們就得在希望被啟動的Activity所在的程序的AndroidManifest.xml里映射的我們要被啟動的Activity中
假設(shè)我們要點(diǎn)擊第一個(gè)活動中的一個(gè)按鈕啟動下面這個(gè)SecondActivity
我們就得在里面設(shè)置過濾器
<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
//這個(gè)MAIN和LAUNCHER是運(yùn)行這個(gè)apk的首個(gè)顯現(xiàn)的Activity,可以改成其他的宙暇。
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最后action只能設(shè)置一個(gè)输枯,category可以設(shè)置多個(gè)