diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d5dc75f8..a5336c53 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,8 +59,7 @@
-
+ android:windowSoftInputMode="adjustPan" />
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
index dbef78aa..eb044036 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/OnboardingPermissionActivity.kt
@@ -1,19 +1,16 @@
package com.dongyang.android.youdongknowme.ui.view.setting
import android.Manifest
-import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.ColorStateList
-import android.net.Uri
-import android.provider.Settings
import androidx.core.content.ContextCompat
import com.dongyang.android.youdongknowme.R
import com.dongyang.android.youdongknowme.databinding.ActivityOnboardingPermissionBinding
import com.dongyang.android.youdongknowme.standard.base.BaseActivity
import com.dongyang.android.youdongknowme.ui.view.main.MainActivity
-import com.dongyang.android.youdongknowme.ui.view.setting.SettingViewModel
import org.koin.androidx.viewmodel.ext.android.viewModel
+
class OnboardingPermissionActivity :
BaseActivity() {
@@ -50,10 +47,10 @@ class OnboardingPermissionActivity :
// 알림 권한이 허용 상태
setPermissionSwitch(true)
} else {
+
// 알림 권한이 미허용 상태
- val intent =
- Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(Uri.parse("package:" + this.packageName))
- startActivity(intent)
+ val dialog = DialogPermission(getString(R.string.dialog_permission_title), getString(R.string.dialog_permission_content), this.packageName)
+ dialog.show(supportFragmentManager, "CustomDialog")
}
} else {
// 온보딩 알림 스위치 비활성화
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingFragment.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingFragment.kt
index f0bc15e0..64f1223c 100644
--- a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingFragment.kt
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/SettingFragment.kt
@@ -1,10 +1,14 @@
package com.dongyang.android.youdongknowme.ui.view.setting
import android.app.Activity
+import android.Manifest
import android.content.Intent
+import android.content.pm.PackageManager
import android.net.Uri
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
+import android.os.Build
+import androidx.core.content.ContextCompat
import com.dongyang.android.youdongknowme.R
import com.dongyang.android.youdongknowme.databinding.FragmentSettingBinding
import com.dongyang.android.youdongknowme.standard.base.BaseFragment
@@ -60,6 +64,7 @@ class SettingFragment : BaseFragment()
viewModel.getUserTopic()
binding.switchSettingUniversityAlarm.setOnCheckedChangeListener { compoundButton, _ ->
+ checkPermission()
if (compoundButton.isChecked) {
if (topics.isNotEmpty()) {
viewModel.updateUserTopic(topics)
@@ -70,6 +75,7 @@ class SettingFragment : BaseFragment()
}
binding.switchSettingDepartmentAlarm.setOnCheckedChangeListener { compoundButton, _ ->
+ checkPermission()
if (compoundButton.isChecked) {
if (department.isNotEmpty()) {
viewModel.updateUserDepartment(department)
@@ -111,6 +117,24 @@ class SettingFragment : BaseFragment()
}
}
+ fun checkPermission(){
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ if (PackageManager.PERMISSION_DENIED == ContextCompat.checkSelfPermission(
+ requireContext(), Manifest.permission.POST_NOTIFICATIONS
+ )
+ ) {
+ // 알림 권한 설정 미허용
+ viewModel.setIsAccessDepartAlarm(false)
+ viewModel.setIsAccessUniversityAlarm(false)
+ binding.switchSettingUniversityAlarm.isChecked = false
+ binding.switchSettingDepartmentAlarm.isChecked = false
+
+ val dialog = DialogPermission(getString(R.string.dialog_permission_title), getString(R.string.dialog_permission_content), requireContext().packageName)
+ dialog.show(parentFragmentManager, "CustomDialog")
+ }
+ }
+ }
+
private fun getAppVersion(): String {
val packageManager =
requireContext().packageManager.getPackageInfo(requireContext().packageName, 0)
diff --git a/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/dialog_permission.kt b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/dialog_permission.kt
new file mode 100644
index 00000000..8f7fb713
--- /dev/null
+++ b/app/src/main/java/com/dongyang/android/youdongknowme/ui/view/setting/dialog_permission.kt
@@ -0,0 +1,49 @@
+package com.dongyang.android.youdongknowme.ui.view.setting
+
+import android.content.Intent
+import android.graphics.Color
+import android.graphics.drawable.ColorDrawable
+import android.net.Uri
+import android.os.Bundle
+import android.provider.Settings
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.DialogFragment
+import com.dongyang.android.youdongknowme.databinding.DialogPermissionBinding
+
+class DialogPermission(val title: String, val content: String, val pacakageName: String) : DialogFragment() {
+ private var _binding: DialogPermissionBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ _binding = DialogPermissionBinding.inflate(inflater, container, false)
+ val view = binding.root
+
+ // 레이아웃 배경을 투명하게
+ dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
+
+ // 제목, 내용 설정
+ binding.customTvTitle.text = title
+ binding.customTvContent.text = content
+
+ // 취소 버튼
+ binding.customTvBtn1.setOnClickListener {
+ dismiss()
+ }
+ // 확인 버튼
+ binding.customTvBtn2.setOnClickListener {
+ val intent =
+ Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(Uri.parse("package:$pacakageName"))
+ startActivity(intent)
+ dismiss()
+ }
+
+ return view
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_permission.xml b/app/src/main/res/layout/dialog_permission.xml
new file mode 100644
index 00000000..3a3952ae
--- /dev/null
+++ b/app/src/main/res/layout/dialog_permission.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 247da675..1840fc10 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -140,4 +140,8 @@
하나 이상의 키워드를 선택해주세요.
정확한 학과명을 기입해주세요.
+
+
+ 기기 알림이 꺼져있습니다.
+ 개인정보 보호 > 알림)을 활성화해야 공지 사항에 대한 키워드를 받을 수 있습니다.]]>
\ No newline at end of file