Skip to content

Commit cc29fd3

Browse files
committed
fix: add missing full screen notification permissions
I have no idea why this wasn't added yet the strings for requesting this permission exist.
1 parent 180719d commit cc29fd3

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<uses-permission android:name="android.permission.VIBRATE" />
2222
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
2323
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
24+
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
2425

2526
<uses-permission
2627
android:name="android.permission.USE_FINGERPRINT"

app/src/main/kotlin/org/fossify/phone/activities/MainActivity.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import org.fossify.phone.dialogs.ChangeSortingDialog
3434
import org.fossify.phone.dialogs.FilterContactSourcesDialog
3535
import org.fossify.phone.extensions.clearMissedCalls
3636
import org.fossify.phone.extensions.config
37+
import org.fossify.phone.extensions.handleFullScreenNotificationsPermission
3738
import org.fossify.phone.extensions.launchCreateNewContactIntent
3839
import org.fossify.phone.fragments.ContactsFragment
3940
import org.fossify.phone.fragments.FavoritesFragment
@@ -73,7 +74,11 @@ class MainActivity : SimpleActivity() {
7374
checkContactPermissions()
7475

7576
if (!config.wasOverlaySnackbarConfirmed && !Settings.canDrawOverlays(this)) {
76-
val snackbar = Snackbar.make(binding.mainHolder, R.string.allow_displaying_over_other_apps, Snackbar.LENGTH_INDEFINITE).setAction(R.string.ok) {
77+
val snackbar = Snackbar.make(
78+
binding.mainHolder,
79+
R.string.allow_displaying_over_other_apps,
80+
Snackbar.LENGTH_INDEFINITE
81+
).setAction(R.string.ok) {
7782
config.wasOverlaySnackbarConfirmed = true
7883
startActivity(Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION))
7984
}
@@ -84,9 +89,9 @@ class MainActivity : SimpleActivity() {
8489
snackbar.show()
8590
}
8691

87-
handleNotificationPermission { granted ->
92+
handleFullScreenNotificationsPermission { granted ->
8893
if (!granted) {
89-
PermissionRequiredDialog(this, R.string.allow_notifications_incoming_calls, { openNotificationSettings() })
94+
toast(org.fossify.commons.R.string.notifications_disabled)
9095
}
9196
}
9297
} else {

app/src/main/kotlin/org/fossify/phone/extensions/Activity.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,27 @@ import android.provider.ContactsContract
88
import android.telecom.PhoneAccount
99
import android.telecom.PhoneAccountHandle
1010
import android.telecom.TelecomManager
11+
import org.fossify.commons.R
1112
import org.fossify.commons.activities.BaseSimpleActivity
1213
import org.fossify.commons.dialogs.CallConfirmationDialog
14+
import org.fossify.commons.dialogs.PermissionRequiredDialog
15+
import org.fossify.commons.extensions.canUseFullScreenIntent
1316
import org.fossify.commons.extensions.initiateCall
1417
import org.fossify.commons.extensions.isDefaultDialer
1518
import org.fossify.commons.extensions.isPackageInstalled
1619
import org.fossify.commons.extensions.launchActivityIntent
1720
import org.fossify.commons.extensions.launchCallIntent
1821
import org.fossify.commons.extensions.launchViewContactIntent
22+
import org.fossify.commons.extensions.openFullScreenIntentSettings
23+
import org.fossify.commons.extensions.openNotificationSettings
1924
import org.fossify.commons.extensions.telecomManager
2025
import org.fossify.commons.helpers.CONTACT_ID
2126
import org.fossify.commons.helpers.IS_PRIVATE
2227
import org.fossify.commons.helpers.PERMISSION_READ_PHONE_STATE
2328
import org.fossify.commons.helpers.SimpleContactsHelper
2429
import org.fossify.commons.helpers.ensureBackgroundThread
2530
import org.fossify.commons.models.contacts.Contact
31+
import org.fossify.phone.BuildConfig
2632
import org.fossify.phone.activities.DialerActivity
2733
import org.fossify.phone.activities.SimpleActivity
2834
import org.fossify.phone.dialogs.SelectSIMDialog
@@ -181,3 +187,36 @@ fun SimpleActivity.showSelectSimDialog(
181187
) { handle ->
182188
callback(handle)
183189
}
190+
191+
fun SimpleActivity.handleFullScreenNotificationsPermission(callback: (granted: Boolean) -> Unit) {
192+
handleNotificationPermission { granted ->
193+
if (granted) {
194+
if (canUseFullScreenIntent()) {
195+
callback(true)
196+
} else {
197+
PermissionRequiredDialog(
198+
activity = this,
199+
textId = R.string.allow_full_screen_notifications_incoming_calls,
200+
positiveActionCallback = {
201+
@SuppressLint("NewApi")
202+
openFullScreenIntentSettings(BuildConfig.APPLICATION_ID)
203+
},
204+
negativeActionCallback = {
205+
callback(false)
206+
}
207+
)
208+
}
209+
} else {
210+
PermissionRequiredDialog(
211+
activity = this,
212+
textId = R.string.allow_notifications_incoming_calls,
213+
positiveActionCallback = {
214+
openNotificationSettings()
215+
},
216+
negativeActionCallback = {
217+
callback(false)
218+
}
219+
)
220+
}
221+
}
222+
}

0 commit comments

Comments
 (0)