manifest에 액티비티 및 관련된 특정 속성을 선언해야 앱에서 액티비티를 사용할 수 있습니다.
액티비티를 선언하려면 매니페스트 파일을 열고 <activity>요소를 <application>요소의 하위 요소로 추가해야 합니다. 예를 들면 다음과 같습니다.
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity" />
...
</application ... >
...
</manifest >
이 요소의 유일한 필수 속성은 액티비티의 클래스 이름을 지정하는 android:name입니다. 또한 라벨, 아이콘 또는 UI테마와 같은 액티비티 특성을 정의하는 속성도 추가할 수 있습니다.
인텐트 필터는 Android플랫폼의 매우 강력한 기능입니다. 인텐트 필터는 명시적 요청뿐만 아니라 암시적 요청을 기반으로도 액티비티를 실행하는 기능을 제공합니다. 예를 들어 명시적 요청은 'Gmail앱에서 이메일 보내기 활동을 시작'하도록 시스템에 지시할 수 있습니다. 이와 반대로 암시적 요청은 '작업을 할 수 있는 활동으로 이메일 보내기 화면을 시작'하도록 시스템에 지시합니다. 시스템 UI에서 사용자에게 작업을 실행할 때 어떤 앱을 사용할지 묻는 메시지가 표시되면 바로 인텐트 필터가 작동한 것입니다.
<activity>요소에서<intent-filer>속성을 선언함으로써 이 기능을 활용할 수 있습니다. 이 요소의 정의에는<activity>요소와 선택적으로 <category>요소 또는<data>요소가 포함됩니다. 이러한 요소를 결합하여 액티비티가 응답할 수 있는 이텐트 유형을 지정할 수 있습니다. 예를 들어 다름 코드 스니펫은 텍스트 데이터를 전송하고 다른 활동들의 요청을 수신하는 액티비티를 구성하는 방법을 보여줍니다
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
이 예에서 <action>요소는 이 활동이 데이터를 전송하도록 지정합니다.<category>요소를 DEFAULT로 선언하면 액티비티가 실행 요청을 수신할 수 있습니다. <data>요소는 이 활동이 전송할 수 있는 데이터 유형을 지정합니다. 다음 코드 스니펫에서는 위에 설명된 액티비티를 호출하는 방법을 보여줍니다.
// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
// Start the activity
startActivity(sendIntent);
val sendIntent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, textMessage)
}
startActivity(sendIntent)
앱이 독립적인 상태를 유지하도록 만들고 다른 앱이 앱 액티비티를 활성화하지 못하게 하려면 다른 어떤 인텐트 필터도 필요 하지 않습니다. 다른 애플리케이션에서 사용하지 못하게 하려는 액티비티에는 인텐트 필터가 없어야 하며, 개발자는 명시적 인텐트를 사용하여 액티비티를 직접 시작할 수 있습니다.