Activity大家都很熟悉,通常我們啓動一個activity時是這樣的:
Intent intent = new Intent(this, FristActivity.class);
startActivity(intent);
這叫做顯式啓動。
但是如果我們要啓動其他應用的Activity怎麼辦呢,這時候我們沒有辦法獲取的那個Activity的class.這時候就要用到隱式啓動了。其實隱式啓動很常見比如我們點擊文件時會彈出讓我們選擇用什麼程序啓動,其實那就是隱式啓動。
隱式,即不是像顯式的那樣直接指定需要調用的Activity,隱式不明確指定啓動哪個Activity,而是設置Action、Data、Category,讓系統來篩選出合適的Activity。
打個比方:你在找一個人的時候你知道他的名字和樣子你叫他就是顯式啓動,如果你不知道他名字你只知道他姓什麼,身高多少,通過這些來找他就是隱式啓動。
那麼怎麼用隱式啓動呢:
首先你要爲你的Activity在AndroidManifest文件中配置intent-filter
<activity android:name="com.example.activity.FristActivity" >
<intent-filter>
<action android:name="myaction" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
這樣我們就能通過action來訪問Activity了,代碼如下:
Intent intent = new Intent();
//設置 Intent 的動作
intent.setAction("myaction");
startActivity(intent);
或者可以直接通過構造方法來設置action
Intent intent = new Intent("myaction");
startActivity(intent);
好了這樣就可以隱式的啓動Activity了,同樣只要我們知道系統的一些Activity的actin是什麼我們就可以調用了比如撥打電話:
Uri uri = Uri.parse("tel:10086");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
Uri uri = Uri.parse("tel.10086");
Intent it =new Intent(Intent.ACTION_CALL,uri);
//需要添加 <uses-permission id="android.permission.CALL_PHONE" /> 這個權限到androidmanifest.xml
好了關於隱式啓動就說到這,有機會再詳細介紹下intent-filter