알람 권한 요청 코드 추가
This commit is contained in:
parent
063158e9e0
commit
ee6090c103
|
@ -2,13 +2,20 @@ package kr.co.vividnext.sodalive.mypage.alarm
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.AlarmManager
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.gun0912.tedpermission.PermissionListener
|
import com.gun0912.tedpermission.PermissionListener
|
||||||
import com.gun0912.tedpermission.normal.TedPermission
|
import com.gun0912.tedpermission.normal.TedPermission
|
||||||
|
@ -31,12 +38,74 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
||||||
private lateinit var alarmAdapter: AlarmAdapter
|
private lateinit var alarmAdapter: AlarmAdapter
|
||||||
private lateinit var loadingDialog: LoadingDialog
|
private lateinit var loadingDialog: LoadingDialog
|
||||||
|
|
||||||
|
private lateinit var requestOverlayPermissionLauncher: ActivityResultLauncher<Intent>
|
||||||
|
private lateinit var requestExactAlarmPermissionLauncher: ActivityResultLauncher<Intent>
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
checkAndRequestOverlayPermission()
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
checkAndRequestExactAlarmPermission()
|
||||||
|
}
|
||||||
|
|
||||||
checkPermissions()
|
checkPermissions()
|
||||||
bindData()
|
bindData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkAndRequestOverlayPermission() {
|
||||||
|
requestOverlayPermissionLauncher = registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
"알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
"알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
val intent = Intent(
|
||||||
|
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
||||||
|
Uri.parse("package:$packageName")
|
||||||
|
)
|
||||||
|
requestOverlayPermissionLauncher.launch(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.S)
|
||||||
|
private fun checkAndRequestExactAlarmPermission() {
|
||||||
|
requestExactAlarmPermissionLauncher = registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||||
|
if (!alarmManager.canScheduleExactAlarms()) {
|
||||||
|
Toast.makeText(
|
||||||
|
this,
|
||||||
|
"알람서비스를 이용하시려면 권한을 허용하셔야 합니다.",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||||
|
if (!alarmManager.canScheduleExactAlarms()) {
|
||||||
|
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
|
||||||
|
requestExactAlarmPermissionLauncher.launch(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun setupView() {
|
override fun setupView() {
|
||||||
loadingDialog = LoadingDialog(this, layoutInflater)
|
loadingDialog = LoadingDialog(this, layoutInflater)
|
||||||
|
|
||||||
|
@ -125,21 +194,9 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
||||||
private fun checkPermissions() {
|
private fun checkPermissions() {
|
||||||
val permissions = mutableListOf<String>()
|
val permissions = mutableListOf<String>()
|
||||||
|
|
||||||
if (!Settings.canDrawOverlays(this)) {
|
|
||||||
Toast.makeText(
|
|
||||||
applicationContext,
|
|
||||||
"알람서비스를 이용하시려면 다른 앱 위에 표시 권한을 허용하셔야 합니다.",
|
|
||||||
Toast.LENGTH_LONG
|
|
||||||
).show()
|
|
||||||
permissions.add(Manifest.permission.SYSTEM_ALERT_WINDOW)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S) {
|
|
||||||
permissions.add(Manifest.permission.SCHEDULE_EXACT_ALARM)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
permissions.add(Manifest.permission.USE_FULL_SCREEN_INTENT)
|
permissions.add(Manifest.permission.USE_FULL_SCREEN_INTENT)
|
||||||
|
permissions.add(Manifest.permission.POST_NOTIFICATIONS)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissions.isNotEmpty()) {
|
if (permissions.isNotEmpty()) {
|
||||||
|
|
|
@ -40,9 +40,6 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
// setLayoutParams(binding.ivText, start = 0, end = 0, top = 390, bottom = 0)
|
|
||||||
// setLayoutParams(binding.ivTextLogo, start = 0, end = 0, top = 0, bottom = 150)
|
|
||||||
|
|
||||||
setupRemoteConfig()
|
setupRemoteConfig()
|
||||||
binding.surfaceView.holder.addCallback(this)
|
binding.surfaceView.holder.addCallback(this)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue