Android

액티비티 (1) : 액티비티 만들기

까망사과 2022. 4. 6. 12:00

액티비티는 앱에서 단일 화면 UI를 제공하는 컴포넌트이다.

대부분의 앱은 여러 개의 액티비티를 포함한다.

 

매니페스트 구성하기

액티비티를 사용하려면 매니페스트 파일에 액티비티와 그의 몇 가지 속성을 선언해야 한다. 

 

액티비티 선언하기

액티비티를 선언하려면 매니페스트 파일의 <application> 태그 안에 <activity> 태그를 추가해야 한다.

<manifest ... >
    <application ... >
        <activity android:name=".ExampleActivity" />
        ...
    </application ... >
    ...
</manifest >

 

android:name은 유일한 필수 속성이며 이는 액티비티의 클래스 이름을 지정한다.

이외에는 라벨, 아이콘, UI 테마처럼 액티비티 특성을 지정하는 속성을 정의할 수 있다.

 

인텐트 필터 선언하기

암시적 인텐트를 수신하려면 <activity> 태그 안에 <intent-filter> 태그를 추가해야 한다.

이 태그는 <action>, <data>, <category> 태그를 포함할 수 있다.

아래 예시는 액티비티가 텍스트 데이터를 전송하도록 구성한 것이다.

<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>

 

위 예시의 액티비티를 호출하려면 다음 코드를 실행하면 된다.

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

 

액티비티를 앱 내에서만 사용하고 외부 앱에서 활성화하지 못하게 하려면 인텐트 필터를 선언하지 않고 명시적 인텐트를 사용하면 된다.

 

권한 선언하기

상위 액티비티와 하위 액티비티가 매니페스트에서 동일한 권한을 가지고 있지 않다면 상위 활동이 하위 활동을 실행할 수 없다.

상위 액티비티에는 하위 액티비티와 일치하는 권한을 가진 <uses-permission> 태그를 선언해야 한다.

 

예를 들어 SocialApp이라는 가상의 앱이 있다 가정하자.

이 앱을 사용하여 소셜 미디어의 게시물을 공유하려면 SocialApp은 아래처럼 보유해야 하는 권한을 자체적으로 정의해야 한다.

<manifest>
<activity android:name="..."
    android:permission=”com.google.socialapp.permission.SHARE_POST”
    ...
/>

 

내부 앱에서 SocialApp을 호출하려면 SocialApp의 매니페스트에 설정된 권한을 보유해야 한다.

<manifest>
   <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>