Merge pull request #693 from wilsonrc/feature/AddExactAlarmPermissionDialog
add asking for Exact alarm permission before scheduling
This commit is contained in:
commit
4501e2fe6b
|
@ -63,7 +63,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:b4cc381943'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:57a5db1ef3'
|
||||||
implementation 'org.greenrobot:eventbus:3.3.1'
|
implementation 'org.greenrobot:eventbus:3.3.1'
|
||||||
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61'
|
||||||
implementation 'com.github.tibbi:android-smsmms:5657799572'
|
implementation 'com.github.tibbi:android-smsmms:5657799572'
|
||||||
|
|
|
@ -251,7 +251,10 @@ class MainActivity : SimpleActivity() {
|
||||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||||
handleNotificationPermission { granted ->
|
handleNotificationPermission { granted ->
|
||||||
if (!granted) {
|
if (!granted) {
|
||||||
PermissionRequiredDialog(this, R.string.allow_notifications_incoming_messages)
|
PermissionRequiredDialog(
|
||||||
|
activity = this,
|
||||||
|
textId = R.string.allow_notifications_incoming_messages,
|
||||||
|
positiveActionCallback = { openNotificationSettings() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.simplemobiletools.smsmessenger.activities
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.app.AlarmManager
|
||||||
import android.content.ActivityNotFoundException
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
|
@ -9,9 +10,11 @@ import android.graphics.BitmapFactory
|
||||||
import android.graphics.drawable.LayerDrawable
|
import android.graphics.drawable.LayerDrawable
|
||||||
import android.media.MediaMetadataRetriever
|
import android.media.MediaMetadataRetriever
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
|
import android.provider.Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM
|
||||||
import android.provider.Telephony
|
import android.provider.Telephony
|
||||||
import android.provider.Telephony.Sms.MESSAGE_TYPE_QUEUED
|
import android.provider.Telephony.Sms.MESSAGE_TYPE_QUEUED
|
||||||
import android.provider.Telephony.Sms.STATUS_NONE
|
import android.provider.Telephony.Sms.STATUS_NONE
|
||||||
|
@ -44,6 +47,7 @@ import com.google.gson.Gson
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
|
import com.simplemobiletools.commons.dialogs.FeatureLockedDialog
|
||||||
|
import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.*
|
import com.simplemobiletools.commons.helpers.*
|
||||||
|
@ -51,6 +55,7 @@ import com.simplemobiletools.commons.models.PhoneNumber
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.commons.models.SimpleContact
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
|
import com.simplemobiletools.smsmessenger.BuildConfig
|
||||||
import com.simplemobiletools.smsmessenger.R
|
import com.simplemobiletools.smsmessenger.R
|
||||||
import com.simplemobiletools.smsmessenger.adapters.AttachmentsAdapter
|
import com.simplemobiletools.smsmessenger.adapters.AttachmentsAdapter
|
||||||
import com.simplemobiletools.smsmessenger.adapters.AutoCompleteTextViewAdapter
|
import com.simplemobiletools.smsmessenger.adapters.AutoCompleteTextViewAdapter
|
||||||
|
@ -75,6 +80,7 @@ import org.joda.time.DateTime
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
import java.security.acl.Permission
|
||||||
|
|
||||||
class ThreadActivity : SimpleActivity() {
|
class ThreadActivity : SimpleActivity() {
|
||||||
private val MIN_DATE_TIME_DIFF_SECS = 300
|
private val MIN_DATE_TIME_DIFF_SECS = 300
|
||||||
|
@ -710,6 +716,25 @@ class ThreadActivity : SimpleActivity() {
|
||||||
setupScheduleSendUi()
|
setupScheduleSendUi()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun askForExactAlarmPermissionIfNeeded(callback: () -> Unit = {}) {
|
||||||
|
if (isSPlus()) {
|
||||||
|
val alarmManager: AlarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
|
||||||
|
if (alarmManager.canScheduleExactAlarms()) {
|
||||||
|
callback()
|
||||||
|
} else {
|
||||||
|
PermissionRequiredDialog(
|
||||||
|
activity = this,
|
||||||
|
textId = R.string.allow_alarm_scheduled_messages,
|
||||||
|
positiveActionCallback = {
|
||||||
|
openRequestExactAlarmSettings(BuildConfig.APPLICATION_ID)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupAttachmentSizes() {
|
private fun setupAttachmentSizes() {
|
||||||
messages.filter { it.attachment != null }.forEach { message ->
|
messages.filter { it.attachment != null }.forEach { message ->
|
||||||
message.attachment!!.attachments.forEach {
|
message.attachment!!.attachments.forEach {
|
||||||
|
@ -1529,10 +1554,12 @@ class ThreadActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun launchScheduleSendDialog(originalDateTime: DateTime? = null) {
|
private fun launchScheduleSendDialog(originalDateTime: DateTime? = null) {
|
||||||
ScheduleMessageDialog(this, originalDateTime) { newDateTime ->
|
askForExactAlarmPermissionIfNeeded {
|
||||||
if (newDateTime != null) {
|
ScheduleMessageDialog(this, originalDateTime) { newDateTime ->
|
||||||
scheduledDateTime = newDateTime
|
if (newDateTime != null) {
|
||||||
showScheduleMessageDialog()
|
scheduledDateTime = newDateTime
|
||||||
|
showScheduleMessageDialog()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue