在沒看麥子學院的教學視頻以前,以爲在一個apk中調用另一個apk中的activity是件很是麻煩的事情,有時候很懼怕碰見這類問題,可是看了android開發教程視頻以後,以爲這原本是一件很簡單的事情,因此寫篇小文章供參考。android
系統提供了不少能夠直接調用的Activity,經過指定的Intent就能夠調用,好比打開搜索的:web
Java代碼 orm
1. Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); 視頻
2. intent.putExtra(SearchManager.QUERY,"searchString") xml
3. startActivity(intent); 教程
Intent.ACTION_WEB_SEARCH是一個字符串,是「搜索」這個Activity的標識,extra是傳給這個activity的一些數據。發送出這個intent以後,系統根據action字符串Intent.ACTION_WEB_SEARCH知道了是要調用哪一個activity,若是有重名,會彈出一個選擇對話框。而後打開此activity,實現想要作的事情。開發
那麼,咱們本身怎麼來實現呢。
首先,寫一個activity,在AndroidManifest.xml裏面的intent-filter中,給這個activity命名,字符串
Xml代碼 get
1. <intent-filter> it
2. <action android:name="chroya.foo"/>
3. <category android:name="android.intent.category.DEFAULT"/>
4. </intent-filter>
而後安裝。安裝完畢以後,你會發現,系統中找不到這個程序。別急,它確實安裝在手機裏面了,可是由於他不是main的,因此係統不會把他當作Application的入口程序。
而要想打開這個activity,只有知道它名字的人才能夠。跟系統的intent同樣使用。它的名字定義爲"chroya.foo",因此,這裏用這個字符串就能夠調用它了:
Java代碼
1. Intent intent = new Intent("chroya.foo");
2. startActivity(intent);
我用剛纔舉的那個系統的intent說明,它的activity裏面使用getIntent().getBundleExtra(SearchManager.QUERY)來接收傳遞進來的搜索字符串參數。而這個SearchManager.QUERY是關鍵字。若是要本身實現這種功能,只須要定義好關鍵字,而後從BundleExtra中取就好了。
有想進行android開發交流的朋友能夠加入:362057824。