본문 바로가기
X

앱 개발 방법 - 액티비티(Activity) (manifest 구성 [액티비티 선언, 인텐트 필터 선언])

by green post it 2022. 1. 16.
반응형

manifest 구성

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>요소는 이 활동이 전송할 수 있는 데이터 유형을 지정합니다. 다음 코드 스니펫에서는 위에 설명된 액티비티를 호출하는 방법을 보여줍니다.

Java

 // 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);

Kotlin

 val sendIntent = Intent().apply { 
 	action = Intent.ACTION_SEND 
 	type = "text/plain" 
 	putExtra(Intent.EXTRA_TEXT, textMessage)
 } 
 startActivity(sendIntent)

앱이 독립적인 상태를 유지하도록 만들고 다른 앱이 앱 액티비티를 활성화하지 못하게 하려면 다른 어떤 인텐트 필터도 필요 하지 않습니다. 다른 애플리케이션에서 사용하지 못하게 하려는 액티비티에는 인텐트 필터가 없어야 하며, 개발자는 명시적 인텐트를 사용하여 액티비티를 직접 시작할 수 있습니다.

반응형