diff --git a/jae/Chapter1/.idea/deploymentTargetSelector.xml b/jae/Chapter1/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index 42b31c9..0000000
--- a/jae/Chapter1/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/.idea/misc.xml b/jae/Chapter1/.idea/misc.xml
deleted file mode 100644
index 0ad17cb..0000000
--- a/jae/Chapter1/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/app/build.gradle.kts b/jae/Chapter1/app/build.gradle.kts
deleted file mode 100644
index 21b79a9..0000000
--- a/jae/Chapter1/app/build.gradle.kts
+++ /dev/null
@@ -1,48 +0,0 @@
-plugins {
- alias(libs.plugins.android.application)
- alias(libs.plugins.kotlin.android)
-}
-
-android {
- namespace = "com.example.chapter1"
- compileSdk = 34
-
- defaultConfig {
- applicationId = "com.example.chapter1"
- minSdk = 24
- targetSdk = 34
- versionCode = 1
- versionName = "1.0"
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = "1.8"
- }
-}
-
-dependencies {
-
- implementation(libs.androidx.core.ktx)
- implementation(libs.androidx.appcompat)
- implementation(libs.material)
- implementation(libs.androidx.activity)
- implementation(libs.androidx.constraintlayout)
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.junit)
- androidTestImplementation(libs.androidx.espresso.core)
-}
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/AndroidManifest.xml b/jae/Chapter1/app/src/main/AndroidManifest.xml
deleted file mode 100644
index f6b99d3..0000000
--- a/jae/Chapter1/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/java/com/example/chapter1/EmotionActivity.kt b/jae/Chapter1/app/src/main/java/com/example/chapter1/EmotionActivity.kt
deleted file mode 100644
index fae9ceb..0000000
--- a/jae/Chapter1/app/src/main/java/com/example/chapter1/EmotionActivity.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.example.chapter1
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-
-class EmotionActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_emotion)
- }
-}
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/java/com/example/chapter1/MainActivity.kt b/jae/Chapter1/app/src/main/java/com/example/chapter1/MainActivity.kt
deleted file mode 100644
index 30afd78..0000000
--- a/jae/Chapter1/app/src/main/java/com/example/chapter1/MainActivity.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.example.chapter1
-
-import android.os.Bundle
-import android.content.Intent
-import android.widget.ImageButton
-import androidx.activity.enableEdgeToEdge
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
-
-class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- setContentView(R.layout.activity_main)
-
- val buttonIds = arrayOf(
- R.id.imageButton1,
- R.id.imageButton2,
- R.id.imageButton3 ,
- R.id.imageButton4,
- R.id.imageButton5
- )
-
- for (id in buttonIds) {
- val button = findViewById(id)
- button.setOnClickListener {
- val intent = Intent(this, EmotionActivity::class.java)
- startActivity(intent)
- }
- }
- }
-}
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/stamp1.xml b/jae/Chapter1/app/src/main/res/drawable/stamp1.xml
deleted file mode 100644
index 2faf724..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/stamp1.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/stamp2.xml b/jae/Chapter1/app/src/main/res/drawable/stamp2.xml
deleted file mode 100644
index 85b0198..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/stamp2.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/stamp3.xml b/jae/Chapter1/app/src/main/res/drawable/stamp3.xml
deleted file mode 100644
index ede1bbe..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/stamp3.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/stamp4.xml b/jae/Chapter1/app/src/main/res/drawable/stamp4.xml
deleted file mode 100644
index e8a2ca9..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/stamp4.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/stamp5.xml b/jae/Chapter1/app/src/main/res/drawable/stamp5.xml
deleted file mode 100644
index 5377e99..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/stamp5.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/drawable/vector.xml b/jae/Chapter1/app/src/main/res/drawable/vector.xml
deleted file mode 100644
index af62026..0000000
--- a/jae/Chapter1/app/src/main/res/drawable/vector.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/jae/Chapter1/app/src/main/res/layout/activity_emotion.xml b/jae/Chapter1/app/src/main/res/layout/activity_emotion.xml
deleted file mode 100644
index 502842b..0000000
--- a/jae/Chapter1/app/src/main/res/layout/activity_emotion.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/res/layout/activity_main.xml b/jae/Chapter1/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index c03e957..0000000
--- a/jae/Chapter1/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/res/values/strings.xml b/jae/Chapter1/app/src/main/res/values/strings.xml
deleted file mode 100644
index 2a18c3e..0000000
--- a/jae/Chapter1/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- Chapter1
-
\ No newline at end of file
diff --git a/jae/Chapter1/app/src/main/res/values/themes.xml b/jae/Chapter1/app/src/main/res/values/themes.xml
deleted file mode 100644
index 5814731..0000000
--- a/jae/Chapter1/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter1/build.gradle.kts b/jae/Chapter1/build.gradle.kts
deleted file mode 100644
index 922f551..0000000
--- a/jae/Chapter1/build.gradle.kts
+++ /dev/null
@@ -1,5 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-plugins {
- alias(libs.plugins.android.application) apply false
- alias(libs.plugins.kotlin.android) apply false
-}
\ No newline at end of file
diff --git a/jae/Chapter1/gradle/libs.versions.toml b/jae/Chapter1/gradle/libs.versions.toml
deleted file mode 100644
index faf6ca2..0000000
--- a/jae/Chapter1/gradle/libs.versions.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-[versions]
-agp = "8.6.0"
-kotlin = "1.9.0"
-coreKtx = "1.13.1"
-junit = "4.13.2"
-junitVersion = "1.2.1"
-espressoCore = "3.6.1"
-appcompat = "1.7.0"
-material = "1.12.0"
-activity = "1.9.2"
-constraintlayout = "2.1.4"
-
-[libraries]
-androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
-junit = { group = "junit", name = "junit", version.ref = "junit" }
-androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
-androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
-androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
-androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
-androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
-
-[plugins]
-android-application = { id = "com.android.application", version.ref = "agp" }
-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
-
diff --git a/jae/Chapter1/settings.gradle.kts b/jae/Chapter1/settings.gradle.kts
deleted file mode 100644
index bfc8c0e..0000000
--- a/jae/Chapter1/settings.gradle.kts
+++ /dev/null
@@ -1,23 +0,0 @@
-pluginManagement {
- repositories {
- google {
- content {
- includeGroupByRegex("com\\.android.*")
- includeGroupByRegex("com\\.google.*")
- includeGroupByRegex("androidx.*")
- }
- }
- mavenCentral()
- gradlePluginPortal()
- }
-}
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
- }
-}
-
-rootProject.name = "Chapter1"
-include(":app")
diff --git a/jae/Chapter2/.gitignore b/jae/Chapter2/.gitignore
deleted file mode 100644
index aa724b7..0000000
--- a/jae/Chapter2/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
diff --git a/jae/Chapter2/.idea/.gitignore b/jae/Chapter2/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/jae/Chapter2/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/jae/Chapter2/.idea/compiler.xml b/jae/Chapter2/.idea/compiler.xml
deleted file mode 100644
index b589d56..0000000
--- a/jae/Chapter2/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/.idea/deploymentTargetSelector.xml b/jae/Chapter2/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index da5d83e..0000000
--- a/jae/Chapter2/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/.idea/gradle.xml b/jae/Chapter2/.idea/gradle.xml
deleted file mode 100644
index 0897082..0000000
--- a/jae/Chapter2/.idea/gradle.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/.idea/kotlinc.xml b/jae/Chapter2/.idea/kotlinc.xml
deleted file mode 100644
index fdf8d99..0000000
--- a/jae/Chapter2/.idea/kotlinc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/.idea/migrations.xml b/jae/Chapter2/.idea/migrations.xml
deleted file mode 100644
index f8051a6..0000000
--- a/jae/Chapter2/.idea/migrations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/.idea/misc.xml b/jae/Chapter2/.idea/misc.xml
deleted file mode 100644
index 0ad17cb..0000000
--- a/jae/Chapter2/.idea/misc.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/.gitignore b/jae/Chapter2/app/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/jae/Chapter2/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/jae/Chapter2/app/build.gradle.kts b/jae/Chapter2/app/build.gradle.kts
deleted file mode 100644
index 5ed9622..0000000
--- a/jae/Chapter2/app/build.gradle.kts
+++ /dev/null
@@ -1,48 +0,0 @@
-plugins {
- alias(libs.plugins.android.application)
- alias(libs.plugins.kotlin.android)
-}
-
-android {
- namespace = "com.example.chapter2"
- compileSdk = 34
-
- defaultConfig {
- applicationId = "com.example.chapter2"
- minSdk = 24
- targetSdk = 34
- versionCode = 1
- versionName = "1.0"
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = "1.8"
- }
-}
-
-dependencies {
-
- implementation(libs.androidx.core.ktx)
- implementation(libs.androidx.appcompat)
- implementation(libs.material)
- implementation(libs.androidx.activity)
- implementation(libs.androidx.constraintlayout)
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.junit)
- androidTestImplementation(libs.androidx.espresso.core)
-}
\ No newline at end of file
diff --git a/jae/Chapter2/app/proguard-rules.pro b/jae/Chapter2/app/proguard-rules.pro
deleted file mode 100644
index 481bb43..0000000
--- a/jae/Chapter2/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/AndroidManifest.xml b/jae/Chapter2/app/src/main/AndroidManifest.xml
deleted file mode 100644
index ee8def7..0000000
--- a/jae/Chapter2/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/java/com/example/chapter2/HomeFragment.kt b/jae/Chapter2/app/src/main/java/com/example/chapter2/HomeFragment.kt
deleted file mode 100644
index 2713c41..0000000
--- a/jae/Chapter2/app/src/main/java/com/example/chapter2/HomeFragment.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.example.chapter2
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-class HomeFragment : Fragment() {
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_home, container, false)
- }
-}
diff --git a/jae/Chapter2/app/src/main/java/com/example/chapter2/MainActivity.kt b/jae/Chapter2/app/src/main/java/com/example/chapter2/MainActivity.kt
deleted file mode 100644
index 5a32df8..0000000
--- a/jae/Chapter2/app/src/main/java/com/example/chapter2/MainActivity.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.example.chapter2
-
-import android.os.Bundle
-import android.view.MenuItem
-import androidx.activity.enableEdgeToEdge
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
-import com.google.android.material.bottomnavigation.BottomNavigationView
-import androidx.fragment.app.Fragment
-
-class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- enableEdgeToEdge()
- setContentView(R.layout.activity_main)
-
- // 기본 Fragment 설정 (HomeFragment)
- if (savedInstanceState == null) {
- supportFragmentManager.beginTransaction()
- .replace(R.id.fragment_container, HomeFragment()) // HomeFragment를 기본으로 설정
- .commit()
- }
-
- val bottomNavigationView = findViewById(R.id.bottom_navigation)
-
- bottomNavigationView.setOnNavigationItemSelectedListener { item ->
- val selectedFragment: Fragment? = when (item.itemId) {
- R.id.home -> HomeFragment() // HomeFragment로 변경
- R.id.profile -> ProfileFragment() // ProfileFragment로 변경
- R.id.settings -> SettingsFragment() // SettingsFragment로 변경
- else -> null
- }
-
- // Fragment가 선택되었을 때 전환
- selectedFragment?.let {
- supportFragmentManager.beginTransaction()
- .replace(R.id.fragment_container, it)
- .commit()
- }
-
- true
- }
-
- ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
- val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
- v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
- insets
- }
- }
-}
diff --git a/jae/Chapter2/app/src/main/java/com/example/chapter2/ProfileFragment.kt b/jae/Chapter2/app/src/main/java/com/example/chapter2/ProfileFragment.kt
deleted file mode 100644
index b30f252..0000000
--- a/jae/Chapter2/app/src/main/java/com/example/chapter2/ProfileFragment.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.example.chapter2
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-class ProfileFragment : Fragment() {
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_profile, container, false)
- }
-}
diff --git a/jae/Chapter2/app/src/main/java/com/example/chapter2/SettingsFragment.kt b/jae/Chapter2/app/src/main/java/com/example/chapter2/SettingsFragment.kt
deleted file mode 100644
index 867d030..0000000
--- a/jae/Chapter2/app/src/main/java/com/example/chapter2/SettingsFragment.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.example.chapter2
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-class SettingsFragment : Fragment() {
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_settings, container, false)
- }
-}
diff --git a/jae/Chapter2/app/src/main/java/com/example/chapter2/SplashActivity.kt b/jae/Chapter2/app/src/main/java/com/example/chapter2/SplashActivity.kt
deleted file mode 100644
index 86a1183..0000000
--- a/jae/Chapter2/app/src/main/java/com/example/chapter2/SplashActivity.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.example.chapter2
-
-import android.content.Intent
-import android.os.Bundle
-import android.os.Handler
-import androidx.appcompat.app.AppCompatActivity
-
-class SplashActivity : AppCompatActivity() {
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_splash)
-
- // 2초 후에 MainActivity로 이동
- Handler().postDelayed({
- startActivity(Intent(this, MainActivity::class.java))
- finish() // 현재 SplashActivity 종료
- }, 2000) // 2초 대기
- }
-}
diff --git a/jae/Chapter2/app/src/main/res/drawable/ic_home.xml b/jae/Chapter2/app/src/main/res/drawable/ic_home.xml
deleted file mode 100644
index 20cb4d6..0000000
--- a/jae/Chapter2/app/src/main/res/drawable/ic_home.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/jae/Chapter2/app/src/main/res/drawable/ic_launcher_background.xml b/jae/Chapter2/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9..0000000
--- a/jae/Chapter2/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter2/app/src/main/res/drawable/ic_launcher_foreground.xml b/jae/Chapter2/app/src/main/res/drawable/ic_launcher_foreground.xml
deleted file mode 100644
index 2b068d1..0000000
--- a/jae/Chapter2/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/drawable/ic_profile.xml b/jae/Chapter2/app/src/main/res/drawable/ic_profile.xml
deleted file mode 100644
index 7429ab7..0000000
--- a/jae/Chapter2/app/src/main/res/drawable/ic_profile.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/jae/Chapter2/app/src/main/res/drawable/ic_settings.xml b/jae/Chapter2/app/src/main/res/drawable/ic_settings.xml
deleted file mode 100644
index 6593f3a..0000000
--- a/jae/Chapter2/app/src/main/res/drawable/ic_settings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/jae/Chapter2/app/src/main/res/layout/activity_main.xml b/jae/Chapter2/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 212c39a..0000000
--- a/jae/Chapter2/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/layout/activity_splash.xml b/jae/Chapter2/app/src/main/res/layout/activity_splash.xml
deleted file mode 100644
index f6750d3..0000000
--- a/jae/Chapter2/app/src/main/res/layout/activity_splash.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
diff --git a/jae/Chapter2/app/src/main/res/layout/fragment_home.xml b/jae/Chapter2/app/src/main/res/layout/fragment_home.xml
deleted file mode 100644
index fc1a8a1..0000000
--- a/jae/Chapter2/app/src/main/res/layout/fragment_home.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/layout/fragment_profile.xml b/jae/Chapter2/app/src/main/res/layout/fragment_profile.xml
deleted file mode 100644
index dbe7262..0000000
--- a/jae/Chapter2/app/src/main/res/layout/fragment_profile.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/layout/fragment_settings.xml b/jae/Chapter2/app/src/main/res/layout/fragment_settings.xml
deleted file mode 100644
index a10293f..0000000
--- a/jae/Chapter2/app/src/main/res/layout/fragment_settings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/menu/bottom_navigation_menu.xml b/jae/Chapter2/app/src/main/res/menu/bottom_navigation_menu.xml
deleted file mode 100644
index 1655238..0000000
--- a/jae/Chapter2/app/src/main/res/menu/bottom_navigation_menu.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
diff --git a/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 6f3b755..0000000
--- a/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 6f3b755..0000000
--- a/jae/Chapter2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher.webp
deleted file mode 100644
index c209e78..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
deleted file mode 100644
index b2dfe3d..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher.webp
deleted file mode 100644
index 4f0f1d6..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
deleted file mode 100644
index 62b611d..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
deleted file mode 100644
index 948a307..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
deleted file mode 100644
index 1b9a695..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
deleted file mode 100644
index 28d4b77..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9287f50..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
deleted file mode 100644
index aa7d642..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9126ae3..0000000
Binary files a/jae/Chapter2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter2/app/src/main/res/values-night/themes.xml b/jae/Chapter2/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index 2ea69b7..0000000
--- a/jae/Chapter2/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/values/colors.xml b/jae/Chapter2/app/src/main/res/values/colors.xml
deleted file mode 100644
index ba8cbe7..0000000
--- a/jae/Chapter2/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- #FF000000
- #FFFFFFFF
- #FF0000
- #0000FF
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/values/strings.xml b/jae/Chapter2/app/src/main/res/values/strings.xml
deleted file mode 100644
index cd66066..0000000
--- a/jae/Chapter2/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
- Chapter2
- Home
- Profile
- Settings
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/xml/backup_rules.xml b/jae/Chapter2/app/src/main/res/xml/backup_rules.xml
deleted file mode 100644
index fa0f996..0000000
--- a/jae/Chapter2/app/src/main/res/xml/backup_rules.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/main/res/xml/data_extraction_rules.xml b/jae/Chapter2/app/src/main/res/xml/data_extraction_rules.xml
deleted file mode 100644
index 9ee9997..0000000
--- a/jae/Chapter2/app/src/main/res/xml/data_extraction_rules.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter2/app/src/test/java/com/example/chapter2/ExampleUnitTest.kt b/jae/Chapter2/app/src/test/java/com/example/chapter2/ExampleUnitTest.kt
deleted file mode 100644
index 1cd4bef..0000000
--- a/jae/Chapter2/app/src/test/java/com/example/chapter2/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.chapter2
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/jae/Chapter2/build.gradle.kts b/jae/Chapter2/build.gradle.kts
deleted file mode 100644
index 922f551..0000000
--- a/jae/Chapter2/build.gradle.kts
+++ /dev/null
@@ -1,5 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-plugins {
- alias(libs.plugins.android.application) apply false
- alias(libs.plugins.kotlin.android) apply false
-}
\ No newline at end of file
diff --git a/jae/Chapter2/gradle.properties b/jae/Chapter2/gradle.properties
deleted file mode 100644
index 20e2a01..0000000
--- a/jae/Chapter2/gradle.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. For more details, visit
-# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
-# Enables namespacing of each library's R class so that its R class includes only the
-# resources declared in the library itself and none from the library's dependencies,
-# thereby reducing the size of the R class for that library
-android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/jae/Chapter2/gradle/wrapper/gradle-wrapper.jar b/jae/Chapter2/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/jae/Chapter2/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/jae/Chapter2/gradle/wrapper/gradle-wrapper.properties b/jae/Chapter2/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index e5443cb..0000000
--- a/jae/Chapter2/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Thu Oct 03 03:02:07 KST 2024
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/jae/Chapter2/gradlew b/jae/Chapter2/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/jae/Chapter2/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/jae/Chapter2/gradlew.bat b/jae/Chapter2/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/jae/Chapter2/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/jae/Chapter2/settings.gradle.kts b/jae/Chapter2/settings.gradle.kts
deleted file mode 100644
index a5cc224..0000000
--- a/jae/Chapter2/settings.gradle.kts
+++ /dev/null
@@ -1,23 +0,0 @@
-pluginManagement {
- repositories {
- google {
- content {
- includeGroupByRegex("com\\.android.*")
- includeGroupByRegex("com\\.google.*")
- includeGroupByRegex("androidx.*")
- }
- }
- mavenCentral()
- gradlePluginPortal()
- }
-}
-dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
- repositories {
- google()
- mavenCentral()
- }
-}
-
-rootProject.name = "Chapter2"
-include(":app")
diff --git a/jae/Chapter5/.gitignore b/jae/Chapter5/.gitignore
deleted file mode 100644
index aa724b7..0000000
--- a/jae/Chapter5/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/caches
-/.idea/libraries
-/.idea/modules.xml
-/.idea/workspace.xml
-/.idea/navEditor.xml
-/.idea/assetWizardSettings.xml
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
diff --git a/jae/Chapter5/.idea/.gitignore b/jae/Chapter5/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/jae/Chapter5/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/jae/Chapter5/.idea/.name b/jae/Chapter5/.idea/.name
deleted file mode 100644
index 1e7c598..0000000
--- a/jae/Chapter5/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-Chapter5Memo
\ No newline at end of file
diff --git a/jae/Chapter5/.idea/compiler.xml b/jae/Chapter5/.idea/compiler.xml
deleted file mode 100644
index b589d56..0000000
--- a/jae/Chapter5/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/.idea/gradle.xml b/jae/Chapter5/.idea/gradle.xml
deleted file mode 100644
index 0897082..0000000
--- a/jae/Chapter5/.idea/gradle.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/.idea/kotlinc.xml b/jae/Chapter5/.idea/kotlinc.xml
deleted file mode 100644
index fdf8d99..0000000
--- a/jae/Chapter5/.idea/kotlinc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/.idea/migrations.xml b/jae/Chapter5/.idea/migrations.xml
deleted file mode 100644
index f8051a6..0000000
--- a/jae/Chapter5/.idea/migrations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/.gitignore b/jae/Chapter5/app/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/jae/Chapter5/app/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/jae/Chapter5/app/proguard-rules.pro b/jae/Chapter5/app/proguard-rules.pro
deleted file mode 100644
index 481bb43..0000000
--- a/jae/Chapter5/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/androidTest/java/com/example/chapter5memo/ExampleInstrumentedTest.kt b/jae/Chapter5/app/src/androidTest/java/com/example/chapter5memo/ExampleInstrumentedTest.kt
deleted file mode 100644
index dbea4fd..0000000
--- a/jae/Chapter5/app/src/androidTest/java/com/example/chapter5memo/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.example.chapter5memo
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.example.chapter5memo", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/AndroidManifest.xml b/jae/Chapter5/app/src/main/AndroidManifest.xml
deleted file mode 100644
index d03c414..0000000
--- a/jae/Chapter5/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/java/com/example/chapter5memo/ConfirmActivity.kt b/jae/Chapter5/app/src/main/java/com/example/chapter5memo/ConfirmActivity.kt
deleted file mode 100644
index cd526fc..0000000
--- a/jae/Chapter5/app/src/main/java/com/example/chapter5memo/ConfirmActivity.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.example.chapter5memo
-
-import android.os.Bundle
-import androidx.appcompat.app.AppCompatActivity
-import com.example.chapter5memo.databinding.ActivityConfirmBinding
-
-class ConfirmActivity : AppCompatActivity() {
-
- private lateinit var binding: ActivityConfirmBinding
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityConfirmBinding.inflate(layoutInflater)
- setContentView(binding.root)
-
- val memo = intent.getStringExtra("memo")
- binding.textViewMemo.text = memo
- }
-}
diff --git a/jae/Chapter5/app/src/main/java/com/example/chapter5memo/MainActivity.kt b/jae/Chapter5/app/src/main/java/com/example/chapter5memo/MainActivity.kt
deleted file mode 100644
index c758044..0000000
--- a/jae/Chapter5/app/src/main/java/com/example/chapter5memo/MainActivity.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.example.chapter5memo
-
-import android.content.Intent
-import android.os.Bundle
-import android.widget.Toast
-import androidx.appcompat.app.AppCompatActivity
-import com.example.chapter5memo.databinding.ActivityMainBinding
-
-class MainActivity : AppCompatActivity() {
-
- private lateinit var binding: ActivityMainBinding
- private var memoText: String? = null
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityMainBinding.inflate(layoutInflater)
- setContentView(binding.root)
-
- binding.btnNext.setOnClickListener {
- val intent = Intent(this, ConfirmActivity::class.java)
- intent.putExtra("memo", binding.editTextMemo.text.toString())
- startActivity(intent)
- }
- }
-
- override fun onResume() {
- super.onResume()
- binding.editTextMemo.setText(memoText ?: "")
- }
-
- override fun onPause() {
- super.onPause()
- memoText = binding.editTextMemo.text.toString()
- }
-
- override fun onRestart() {
- super.onRestart()
- val dialog = android.app.AlertDialog.Builder(this)
- .setTitle("메모 이어서 작성하기")
- .setMessage("이어 작성하시겠습니까?")
- .setPositiveButton("네") { _, _ -> }
- .setNegativeButton("아니요") { _, _ ->
- memoText = null
- binding.editTextMemo.text.clear()
- Toast.makeText(this, "메모가 없습니다.", Toast.LENGTH_SHORT).show()
- }
- .create()
- dialog.show()
- }
-}
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/drawable/ic_launcher_background.xml b/jae/Chapter5/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9..0000000
--- a/jae/Chapter5/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter5/app/src/main/res/drawable/ic_launcher_foreground.xml b/jae/Chapter5/app/src/main/res/drawable/ic_launcher_foreground.xml
deleted file mode 100644
index 2b068d1..0000000
--- a/jae/Chapter5/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/layout/activity_confirm.xml b/jae/Chapter5/app/src/main/res/layout/activity_confirm.xml
deleted file mode 100644
index 80a1996..0000000
--- a/jae/Chapter5/app/src/main/res/layout/activity_confirm.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/layout/activity_main.xml b/jae/Chapter5/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index b0bfa3f..0000000
--- a/jae/Chapter5/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher.xml
deleted file mode 100644
index 6f3b755..0000000
--- a/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
deleted file mode 100644
index 6f3b755..0000000
--- a/jae/Chapter5/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher.webp
deleted file mode 100644
index c209e78..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
deleted file mode 100644
index b2dfe3d..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher.webp
deleted file mode 100644
index 4f0f1d6..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
deleted file mode 100644
index 62b611d..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
deleted file mode 100644
index 948a307..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
deleted file mode 100644
index 1b9a695..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
deleted file mode 100644
index 28d4b77..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9287f50..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
deleted file mode 100644
index aa7d642..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9126ae3..0000000
Binary files a/jae/Chapter5/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ
diff --git a/jae/Chapter5/app/src/main/res/values-night/themes.xml b/jae/Chapter5/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index 2007140..0000000
--- a/jae/Chapter5/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/values/colors.xml b/jae/Chapter5/app/src/main/res/values/colors.xml
deleted file mode 100644
index 34f2639..0000000
--- a/jae/Chapter5/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- #FF000000
- #FFFFFFFF
- #1976D2
- #888888
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/values/strings.xml b/jae/Chapter5/app/src/main/res/values/strings.xml
deleted file mode 100644
index 89bc158..0000000
--- a/jae/Chapter5/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- Chapter5Memo
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/values/themes.xml b/jae/Chapter5/app/src/main/res/values/themes.xml
deleted file mode 100644
index be749dc..0000000
--- a/jae/Chapter5/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/xml/backup_rules.xml b/jae/Chapter5/app/src/main/res/xml/backup_rules.xml
deleted file mode 100644
index fa0f996..0000000
--- a/jae/Chapter5/app/src/main/res/xml/backup_rules.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/main/res/xml/data_extraction_rules.xml b/jae/Chapter5/app/src/main/res/xml/data_extraction_rules.xml
deleted file mode 100644
index 9ee9997..0000000
--- a/jae/Chapter5/app/src/main/res/xml/data_extraction_rules.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/jae/Chapter5/app/src/test/java/com/example/chapter5memo/ExampleUnitTest.kt b/jae/Chapter5/app/src/test/java/com/example/chapter5memo/ExampleUnitTest.kt
deleted file mode 100644
index 9a2676a..0000000
--- a/jae/Chapter5/app/src/test/java/com/example/chapter5memo/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.chapter5memo
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/jae/Chapter5/gradle.properties b/jae/Chapter5/gradle.properties
deleted file mode 100644
index 20e2a01..0000000
--- a/jae/Chapter5/gradle.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Project-wide Gradle settings.
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. For more details, visit
-# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
-# org.gradle.parallel=true
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Kotlin code style for this project: "official" or "obsolete":
-kotlin.code.style=official
-# Enables namespacing of each library's R class so that its R class includes only the
-# resources declared in the library itself and none from the library's dependencies,
-# thereby reducing the size of the R class for that library
-android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/jae/Chapter5/gradle/libs.versions.toml b/jae/Chapter5/gradle/libs.versions.toml
deleted file mode 100644
index 4cd27e9..0000000
--- a/jae/Chapter5/gradle/libs.versions.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-[versions]
-agp = "8.6.0"
-kotlin = "1.9.0"
-coreKtx = "1.13.1"
-junit = "4.13.2"
-junitVersion = "1.2.1"
-espressoCore = "3.6.1"
-appcompat = "1.7.0"
-material = "1.12.0"
-activity = "1.9.3"
-constraintlayout = "2.1.4"
-
-[libraries]
-androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
-junit = { group = "junit", name = "junit", version.ref = "junit" }
-androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
-androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
-androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
-androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
-androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
-
-[plugins]
-android-application = { id = "com.android.application", version.ref = "agp" }
-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
-
diff --git a/jae/Chapter5/gradle/wrapper/gradle-wrapper.jar b/jae/Chapter5/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c..0000000
Binary files a/jae/Chapter5/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/jae/Chapter5/gradle/wrapper/gradle-wrapper.properties b/jae/Chapter5/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index ae184d8..0000000
--- a/jae/Chapter5/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Tue Oct 29 01:34:08 KST 2024
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/jae/Chapter5/gradlew b/jae/Chapter5/gradlew
deleted file mode 100644
index 4f906e0..0000000
--- a/jae/Chapter5/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/jae/Chapter5/gradlew.bat b/jae/Chapter5/gradlew.bat
deleted file mode 100644
index 107acd3..0000000
--- a/jae/Chapter5/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/jae/Chapter1/.gitignore b/jae/week10(KaKao Login)/.gitignore
similarity index 100%
rename from jae/Chapter1/.gitignore
rename to jae/week10(KaKao Login)/.gitignore
diff --git a/jae/Chapter1/.idea/.gitignore b/jae/week10(KaKao Login)/.idea/.gitignore
similarity index 100%
rename from jae/Chapter1/.idea/.gitignore
rename to jae/week10(KaKao Login)/.idea/.gitignore
diff --git a/jae/week10(KaKao Login)/.idea/.name b/jae/week10(KaKao Login)/.idea/.name
new file mode 100644
index 0000000..b463ed2
--- /dev/null
+++ b/jae/week10(KaKao Login)/.idea/.name
@@ -0,0 +1 @@
+KaKaoLogin
\ No newline at end of file
diff --git a/jae/Chapter1/.idea/compiler.xml b/jae/week10(KaKao Login)/.idea/compiler.xml
similarity index 100%
rename from jae/Chapter1/.idea/compiler.xml
rename to jae/week10(KaKao Login)/.idea/compiler.xml
diff --git a/jae/week10(KaKao Login)/.idea/deploymentTargetDropDown.xml b/jae/week10(KaKao Login)/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..0c0c338
--- /dev/null
+++ b/jae/week10(KaKao Login)/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jae/Chapter5/.idea/deploymentTargetSelector.xml b/jae/week10(KaKao Login)/.idea/deploymentTargetSelector.xml
similarity index 100%
rename from jae/Chapter5/.idea/deploymentTargetSelector.xml
rename to jae/week10(KaKao Login)/.idea/deploymentTargetSelector.xml
diff --git a/jae/Chapter1/.idea/gradle.xml b/jae/week10(KaKao Login)/.idea/gradle.xml
similarity index 100%
rename from jae/Chapter1/.idea/gradle.xml
rename to jae/week10(KaKao Login)/.idea/gradle.xml
diff --git a/jae/Chapter1/.idea/kotlinc.xml b/jae/week10(KaKao Login)/.idea/kotlinc.xml
similarity index 100%
rename from jae/Chapter1/.idea/kotlinc.xml
rename to jae/week10(KaKao Login)/.idea/kotlinc.xml
diff --git a/jae/Chapter1/.idea/migrations.xml b/jae/week10(KaKao Login)/.idea/migrations.xml
similarity index 100%
rename from jae/Chapter1/.idea/migrations.xml
rename to jae/week10(KaKao Login)/.idea/migrations.xml
diff --git a/jae/Chapter5/.idea/misc.xml b/jae/week10(KaKao Login)/.idea/misc.xml
similarity index 91%
rename from jae/Chapter5/.idea/misc.xml
rename to jae/week10(KaKao Login)/.idea/misc.xml
index 0ad17cb..8978d23 100644
--- a/jae/Chapter5/.idea/misc.xml
+++ b/jae/week10(KaKao Login)/.idea/misc.xml
@@ -1,4 +1,3 @@
-
diff --git a/jae/week10(KaKao Login)/.idea/vcs.xml b/jae/week10(KaKao Login)/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/jae/week10(KaKao Login)/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jae/Chapter1/app/.gitignore b/jae/week10(KaKao Login)/app/.gitignore
similarity index 100%
rename from jae/Chapter1/app/.gitignore
rename to jae/week10(KaKao Login)/app/.gitignore
diff --git a/jae/Chapter5/app/build.gradle b/jae/week10(KaKao Login)/app/build.gradle
similarity index 70%
rename from jae/Chapter5/app/build.gradle
rename to jae/week10(KaKao Login)/app/build.gradle
index f75cde3..2ae0c3e 100644
--- a/jae/Chapter5/app/build.gradle
+++ b/jae/week10(KaKao Login)/app/build.gradle
@@ -1,15 +1,15 @@
plugins {
- alias(libs.plugins.android.application)
- alias(libs.plugins.kotlin.android)
+ alias(libs.plugins.androidApplication)
+ alias(libs.plugins.jetbrainsKotlinAndroid)
}
android {
- namespace 'com.example.chapter5memo'
+ namespace 'com.example.KaKaoLogin'
compileSdk 34
defaultConfig {
- applicationId "com.example.chapter5memo"
- minSdk 29
+ applicationId "com.example.KaKaoLogin"
+ minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
@@ -30,24 +30,18 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
- viewBinding {
- enabled = true
- }
-
- buildFeatures {
- dataBinding true
- }
}
dependencies {
- implementation 'androidx.appcompat:appcompat:1.5.1'
- implementation 'androidx.core:core-ktx:1.10.1'
+
implementation libs.androidx.core.ktx
implementation libs.androidx.appcompat
implementation libs.material
implementation libs.androidx.activity
implementation libs.androidx.constraintlayout
+ implementation libs.identity.credential.android
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
+ implementation "com.kakao.sdk:v2-user:2.12.1" // 카카오 로그인
}
\ No newline at end of file
diff --git a/jae/Chapter1/app/proguard-rules.pro b/jae/week10(KaKao Login)/app/proguard-rules.pro
similarity index 100%
rename from jae/Chapter1/app/proguard-rules.pro
rename to jae/week10(KaKao Login)/app/proguard-rules.pro
diff --git a/jae/Chapter2/app/src/androidTest/java/com/example/chapter2/ExampleInstrumentedTest.kt b/jae/week10(KaKao Login)/app/src/androidTest/java/com/example/KaKaoLogin/ExampleInstrumentedTest.kt
similarity index 84%
rename from jae/Chapter2/app/src/androidTest/java/com/example/chapter2/ExampleInstrumentedTest.kt
rename to jae/week10(KaKao Login)/app/src/androidTest/java/com/example/KaKaoLogin/ExampleInstrumentedTest.kt
index 7425866..10a9e53 100644
--- a/jae/Chapter2/app/src/androidTest/java/com/example/chapter2/ExampleInstrumentedTest.kt
+++ b/jae/week10(KaKao Login)/app/src/androidTest/java/com/example/KaKaoLogin/ExampleInstrumentedTest.kt
@@ -1,4 +1,4 @@
-package com.example.chapter2
+package com.example.KaKaoLogin
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -19,6 +19,6 @@ class ExampleInstrumentedTest {
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.example.chapter2", appContext.packageName)
+ assertEquals("com.example.KaKaoLogin", appContext.packageName)
}
}
\ No newline at end of file
diff --git a/jae/week10(KaKao Login)/app/src/main/AndroidManifest.xml b/jae/week10(KaKao Login)/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..301f917
--- /dev/null
+++ b/jae/week10(KaKao Login)/app/src/main/AndroidManifest.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/AuthCodeHandlerActivity.kt b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/AuthCodeHandlerActivity.kt
new file mode 100644
index 0000000..799b504
--- /dev/null
+++ b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/AuthCodeHandlerActivity.kt
@@ -0,0 +1,53 @@
+package com.example.KaKaoLogin
+
+import android.content.ContentValues.TAG
+import android.os.Bundle
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import com.kakao.sdk.auth.model.OAuthToken
+import com.kakao.sdk.common.model.ClientError
+import com.kakao.sdk.common.model.ClientErrorCause
+import com.kakao.sdk.user.UserApiClient
+
+class AuthCodeHandlerActivity : AppCompatActivity() {
+
+ private val mCallback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
+ if (error != null) {
+ Log.e(TAG, "로그인 실패 $error")
+ } else if (token != null) {
+ Log.e(TAG, "로그인 성공 ${token.accessToken}")
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+// 카카오톡 설치 확인
+ if (UserApiClient.instance.isKakaoTalkLoginAvailable(this)) {
+ // 카카오톡 로그인
+ UserApiClient.instance.loginWithKakaoTalk(this) { token, error ->
+ // 로그인 실패 부분
+ if (error != null) {
+ Log.e(TAG, "로그인 실패 $error")
+ // 사용자가 취소
+ if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
+ return@loginWithKakaoTalk
+ }
+ // 다른 오류
+ else {
+ UserApiClient.instance.loginWithKakaoAccount(
+ this,
+ callback = mCallback
+ ) // 카카오 이메일 로그인
+ }
+ }
+ // 로그인 성공 부분
+ else if (token != null) {
+ Log.e(TAG, "로그인 성공 ${token.accessToken}")
+ }
+ }
+ } else {
+ UserApiClient.instance.loginWithKakaoAccount(this, callback = mCallback) // 카카오 이메일 로그인
+ }
+ }
+}
\ No newline at end of file
diff --git a/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/GlobalApplication.kt b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/GlobalApplication.kt
new file mode 100644
index 0000000..2559e3b
--- /dev/null
+++ b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/GlobalApplication.kt
@@ -0,0 +1,13 @@
+package com.example.KaKaoLogin
+
+import android.app.Application
+import com.kakao.sdk.common.KakaoSdk
+
+class GlobalApplication : Application(){
+ override fun onCreate() {
+ super.onCreate()
+
+ KakaoSdk.init(this, "6105991f00a3351df851b7d5abb61162")
+ }
+
+}
\ No newline at end of file
diff --git a/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/MainActivity.kt b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/MainActivity.kt
new file mode 100644
index 0000000..c34a49a
--- /dev/null
+++ b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/MainActivity.kt
@@ -0,0 +1,98 @@
+package com.example.KaKaoLogin
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.widget.ImageButton
+import android.widget.Toast
+import com.kakao.sdk.auth.model.OAuthToken
+import com.kakao.sdk.common.util.Utility
+import com.kakao.sdk.common.model.AuthErrorCause.*
+import com.kakao.sdk.user.UserApiClient
+
+class MainActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ // 로그인 정보 확인
+ UserApiClient.instance.accessTokenInfo { tokenInfo, error ->
+ if (error != null) {
+ Toast.makeText(this, "토큰 정보 보기 실패", Toast.LENGTH_SHORT).show()
+ } else if (tokenInfo != null) {
+ Toast.makeText(this, "토큰 정보 보기 성공", Toast.LENGTH_SHORT).show()
+ val intent = Intent(this, SecondActivity::class.java)
+ startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
+ finish()
+ }
+ }
+
+
+ val keyHash = Utility.getKeyHash(this)
+ Log.d("Hash", keyHash)
+
+
+ val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
+ if (error != null) {
+ when {
+ error.toString() == AccessDenied.toString() -> {
+ Toast.makeText(this, "접근이 거부 됨(동의 취소)", Toast.LENGTH_SHORT).show()
+ }
+
+ error.toString() == InvalidClient.toString() -> {
+ Toast.makeText(this, "유효하지 않은 앱", Toast.LENGTH_SHORT).show()
+ }
+
+ error.toString() == InvalidGrant.toString() -> {
+ Toast.makeText(this, "인증 수단이 유효하지 않아 인증할 수 없는 상태", Toast.LENGTH_SHORT)
+ .show()
+ }
+
+ error.toString() == InvalidRequest.toString() -> {
+ Toast.makeText(this, "요청 파라미터 오류", Toast.LENGTH_SHORT).show()
+ }
+
+ error.toString() == InvalidScope.toString() -> {
+ Toast.makeText(this, "유효하지 않은 scope ID", Toast.LENGTH_SHORT).show()
+ }
+
+ error.toString() == Misconfigured.toString() -> {
+ Toast.makeText(this, "설정이 올바르지 않음(android key hash)", Toast.LENGTH_SHORT)
+ .show()
+ }
+
+ error.toString() == ServerError.toString() -> {
+ Toast.makeText(this, "서버 내부 에러", Toast.LENGTH_SHORT).show()
+ }
+
+ error.toString() == Unauthorized.toString() -> {
+ Toast.makeText(this, "앱이 요청 권한이 없음", Toast.LENGTH_SHORT).show()
+ }
+
+ else -> { // Unknown
+ Toast.makeText(this, "기타 에러", Toast.LENGTH_SHORT).show()
+ }
+ }
+ } else if (token != null) {
+ Toast.makeText(this, "로그인에 성공하였습니다.", Toast.LENGTH_SHORT).show()
+ val intent = Intent(this, SecondActivity::class.java)
+ startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
+ finish()
+ }
+ }
+
+
+ val kakao_login_button = findViewById(R.id.btn_kakao) // 로그인 버튼
+
+ kakao_login_button.setOnClickListener {
+ kakao_login_button.setOnClickListener {
+ if (UserApiClient.instance.isKakaoTalkLoginAvailable(this)) {
+ UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
+ } else {
+ UserApiClient.instance.loginWithKakaoAccount(this, callback = callback)
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/SecondActivity.kt b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/SecondActivity.kt
new file mode 100644
index 0000000..cf14da7
--- /dev/null
+++ b/jae/week10(KaKao Login)/app/src/main/java/com/example/KaKaoLogin/SecondActivity.kt
@@ -0,0 +1,56 @@
+package com.example.KaKaoLogin
+
+import android.content.Intent
+import android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.widget.Button
+import android.widget.ImageView
+import android.widget.TextView
+import android.widget.Toast
+import com.kakao.sdk.user.UserApiClient
+
+class SecondActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.second_activity)
+ val nickname = findViewById(R.id.nickname) // 로그인 버튼
+
+
+ UserApiClient.instance.me { user, error ->
+ nickname.text = "닉네임: ${user?.kakaoAccount?.profile?.nickname}"
+
+ }
+
+ val kakao_logout_button = findViewById