알람 권한 요청 코드 추가
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.annotation.SuppressLint
|
||||
import android.app.AlarmManager
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.gun0912.tedpermission.PermissionListener
|
||||
import com.gun0912.tedpermission.normal.TedPermission
|
||||
|
@ -31,12 +38,74 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||
private lateinit var alarmAdapter: AlarmAdapter
|
||||
private lateinit var loadingDialog: LoadingDialog
|
||||
|
||||
private lateinit var requestOverlayPermissionLauncher: ActivityResultLauncher<Intent>
|
||||
private lateinit var requestExactAlarmPermissionLauncher: ActivityResultLauncher<Intent>
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
checkAndRequestOverlayPermission()
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
checkAndRequestExactAlarmPermission()
|
||||
}
|
||||
|
||||
checkPermissions()
|
||||
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() {
|
||||
loadingDialog = LoadingDialog(this, layoutInflater)
|
||||
|
||||
|
@ -125,21 +194,9 @@ class AlarmListActivity : BaseActivity<ActivityAlarmListBinding>(
|
|||
private fun checkPermissions() {
|
||||
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) {
|
||||
permissions.add(Manifest.permission.USE_FULL_SCREEN_INTENT)
|
||||
permissions.add(Manifest.permission.POST_NOTIFICATIONS)
|
||||
}
|
||||
|
||||
if (permissions.isNotEmpty()) {
|
||||
|
|
|
@ -40,9 +40,6 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
|
|||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
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()
|
||||
binding.surfaceView.holder.addCallback(this)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue