iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
自我挑戰組

Android API超初學!!系列 第 18

[Android API] [Day 18] intent (1) Activity

Intent這個詞之前提到很多次了,今天就來好好研究它。
先回憶一下,intent的主要目的是呼叫其他APP的component。今天要研究的就是如何呼叫,有哪些API可以用。

一樣參考官網教學,那就開始吧!

啟動activity

單純啟動activity有以下兩種API,Intent物件包含要啟動的activity,和一些需要的資訊。Bundle options可加可不加。

  • public abstract void startActivity (Intent intent[, Bundle options])
    一次啟動一個activity
  • public abstract void startActivities (Intent[] intents[, Bundle options])
    一次啟動多個activity,啟動順序為intents array的順序

啟動activity並拿return值

  • public void startActivityForResult (Intent intent, int requestCode[, Bundle options])
    當requestCode >= 0,會執行 onActivityResult (int requestCode, int resultCode, Intent data),這裡的Intent data就是我們要的result了

這裡先暫停,拿出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指定權限,可寫在這:

        <activity android:name=".我的Activity"
                  android:permission=”android.permission.某權限”> 

要使用該activity的APP,需在<manifest>底下寫:

<uses-permission android:name="android.permission.某權限" />

上一篇
[Android API] [Day 17] AndroidManifest.xml (2)
下一篇
[Android API] [Day 20] intent (3) Broadcast
系列文
Android API超初學!!30

尚未有邦友留言

立即登入留言