<activity
android:name=".menu.login.LoginActivity"
android:exported="false" />
<activity
android:name=".menu.map.NaverMapActivity"
android:exported="false" />
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("data1", "hello")
intent.putExtra("data2", "10")
startActivity(intent)
// 타입별 함수 여러개 제공
putStringExtra(), getIntExtra(), getDoubleExtra() 사용
val intent = intent
val data1 = intent.getStringExtra("data1")
val data2 = intent.getIntExtra("data2")
// 명시적 인텐트
val intent = Intent(this, MainActivity::class.java)
AndroidManifest.xml
// 자동으로 만들어지는 메인 액티비티 (스플래시 화면)
<activity
android:name=".menu.login.SplashActivity"
android:exported="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
💜 인텐트 하위필터
- < action > : 컴포넌트의 기능
ex ) android.intent.action.VIEW - 데이터를 보여주는 기능
android.intent.action.MAIN - 앱의 진입 점
android.intent.action.EDIT - 데이터 편집- < category > : 컴포넌트가 포함되는 범주
ex ) android.intent.category.LAUNCHER - 런처가 실행하는 컴포넌트
android.intent.category.BROWSABLE - 브라우저가 실행하는 컴포넌트- < data > : 컴포넌트에 필요한 데이터 정보
android:scheme, android:host, android:port, android:mimeType 등 속성 이용
ex ) android:scheme="http" - URL 프로토콜에 맞춰 액티비티 시작
// 외부앱과 연동하는 인텐트 필터 설정 (메인 액티비티 외)
<activity
android:name=".EditActivity">
<intent-filter>
<action android:name="ACTION_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"/>
</intent-filter>
</activity>
// 인텐트 프로퍼티 이용 - (1)
val intent = intent()
intent.action = "ACTION_EDIT"
intent.data = Uri.parse("http://www.naver.com")
startActivity(intent)
// 인텐트 프로퍼티 이용 - (2)
val intent = intent("ACTION_EDIT", Uri.parse("http://www.naver.com"))
startActivity(intent)
// mimeType 설정
<activity
android:name=".EditActivity">
<intent-filter>
<action android:name="ACTION_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*"/>
</intent-filter>
</activity>
// 실행하는 인텐트에도 타입 정보 설정
val intent = intent("ACTION_EDIT")
intent.type = "image/*"
startActivity(intent)
val intent = intent()
intent.action = "ACTION_HELLO"
try {
startActivity(intent)
} catch (e: Exception) {
Toast.makeText(this,"No!", Toast.LENGTH_SHORT).show()
}
// 사용자에게 어느 앱 실행할건지 띄움
val intent = intent(Intent.ACTION_VIEW, Uri.parse("geo:37.567271, 126.8252269"))
startActivity(intent)
// 앱 지정하기
val intent = intent(Intent.ACTION_VIEW, Uri.parse("geo:37.567271, 126.8252269"))
intent.setPackage("com.google.android.apps.maps")
startActivity(intent)
참고 : https://developer.android.com/guide/components/intents-filters?hl=ko