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