Intent這個詞之前提到很多次了,今天就來好好研究它。
先回憶一下,intent的主要目的是呼叫其他APP的component。今天要研究的就是如何呼叫,有哪些API可以用。
一樣參考官網教學,那就開始吧!
單純啟動activity有以下兩種API,Intent物件包含要啟動的activity,和一些需要的資訊。Bundle options可加可不加。
這裡先暫停,拿出AndroidManifest.xml檔案來回憶一下。一樣用官網提供的教學範例,來設定一個activity(官網某些解釋不清楚的地方,參考這篇教學文):
<activity android:name=".我的Activity">
<intent-filter> <!-- 如果activity根本不想讓別人呼叫,intent-filter就不用寫了 -->
<action android:name="android.intent.action.SEND" />
<!-- action.SEND代表此activity是送資料用的。
預設是action.MAIN,代表啟動acitivity入口點,不預期收到return data -->
<category android:name="android.intent.category.DEFAULT" />
<!-- category.DEFAULT代表系統使用implicit intent蒐尋時,會搜尋看看此activity。
預設是category.LAUNCHER,代表透過按下APP icon啟動-->
<data android:mimeType="text/plain" />
<!-- 代表此activity可傳送的資料類型。 -->
</intent-filter>
</activity>
Java就可這樣寫:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND); // manifest的<action>
sendIntent.setType("text/plain"); // manifest的<data>
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
startActivity(sendIntent);
如果要為activity指定權限,可寫在這:
<activity android:name=".我的Activity"
android:permission=”android.permission.某權限”>
要使用該activity的APP,需在<manifest>底下寫:
<uses-permission android:name="android.permission.某權限" />