Skip to content

Commit 519fa39

Browse files
authored
Merge pull request #6128 from nextcloud/feature/noid/fullscreenPermissionSetting
add fullscreen permission setting
2 parents c506a13 + 37d5e5b commit 519fa39

4 files changed

Lines changed: 61 additions & 0 deletions

File tree

app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package com.nextcloud.talk.conversationlist
88

99
import android.Manifest
1010
import android.annotation.SuppressLint
11+
import android.app.NotificationManager
1112
import android.content.ActivityNotFoundException
1213
import android.content.Intent
1314
import android.content.pm.PackageManager
@@ -925,6 +926,8 @@ class ConversationsListActivity : BaseActivity() {
925926
val notificationPermissionNotGranted = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
926927
!platformPermissionUtil.isPostNotificationsPermissionGranted()
927928
val batteryOptimizationNotIgnored = !PowerManagerUtils().isIgnoringBatteryOptimizations()
929+
val fullScreenIntentNotGranted = Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE &&
930+
!getSystemService(NotificationManager::class.java).canUseFullScreenIntent()
928931

929932
val messagesChannelNotEnabled = !NotificationUtils.isMessagesNotificationChannelEnabled(this)
930933
val callsChannelNotEnabled = !NotificationUtils.isCallsNotificationChannelEnabled(this)
@@ -934,6 +937,7 @@ class ConversationsListActivity : BaseActivity() {
934937

935938
val settingsOfUserAreWrong = notificationPermissionNotGranted ||
936939
batteryOptimizationNotIgnored ||
940+
fullScreenIntentNotGranted ||
937941
messagesChannelNotEnabled ||
938942
callsChannelNotEnabled ||
939943
!serverNotificationAppInstalled

app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import android.animation.Animator
1515
import android.animation.AnimatorListenerAdapter
1616
import android.annotation.SuppressLint
1717
import android.app.KeyguardManager
18+
import android.app.NotificationManager
1819
import android.content.Context
1920
import android.content.DialogInterface
2021
import android.content.Intent
@@ -322,6 +323,7 @@ class SettingsActivity :
322323
setupUnifiedPushSettings()
323324
setupNotificationSoundsSettings()
324325
setupNotificationPermissionSettings()
326+
setupFullScreenIntentPermissionSetting()
325327
setupServerNotificationAppCheck()
326328
}
327329

@@ -485,6 +487,37 @@ class SettingsActivity :
485487
}
486488
}
487489

490+
private fun setupFullScreenIntentPermissionSetting() {
491+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
492+
val notificationManager = getSystemService(NotificationManager::class.java)
493+
if (notificationManager.canUseFullScreenIntent()) {
494+
binding.fullScreenIntentPermissionSubtitle.text =
495+
resources.getString(R.string.full_screen_intent_permission_granted)
496+
binding.fullScreenIntentPermissionSubtitle.setTextColor(
497+
resources.getColor(R.color.high_emphasis_text, null)
498+
)
499+
} else {
500+
binding.fullScreenIntentPermissionSubtitle.text =
501+
resources.getString(R.string.full_screen_intent_permission_not_granted)
502+
binding.fullScreenIntentPermissionSubtitle.setTextColor(
503+
resources.getColor(R.color.nc_darkRed, null)
504+
)
505+
506+
if (openedByNotificationWarning) {
507+
DrawableUtils.blinkDrawable(binding.settingsFullScreenIntentWrapper.background)
508+
}
509+
}
510+
binding.settingsFullScreenIntentWrapper.setOnClickListener {
511+
val intent = Intent(Settings.ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT).apply {
512+
data = "package:$packageName".toUri()
513+
}
514+
startActivity(intent)
515+
}
516+
} else {
517+
binding.settingsFullScreenIntentWrapper.visibility = View.GONE
518+
}
519+
}
520+
488521
private fun setupNotificationSoundsSettings() {
489522
if (NotificationUtils.isCallsNotificationChannelEnabled(this)) {
490523
val callRingtoneUri = getCallRingtoneUri(context, (appPreferences))

app/src/main/res/layout/activity_settings.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,27 @@
405405
android:text="@string/nc_diagnosis_push_available_no"/>
406406
</LinearLayout>
407407

408+
<LinearLayout
409+
android:id="@+id/settings_full_screen_intent_wrapper"
410+
android:layout_width="match_parent"
411+
android:layout_height="wrap_content"
412+
android:background="?android:attr/selectableItemBackground"
413+
android:orientation="vertical"
414+
android:padding="@dimen/standard_padding">
415+
416+
<com.google.android.material.textview.MaterialTextView
417+
android:layout_width="wrap_content"
418+
android:layout_height="wrap_content"
419+
android:text="@string/full_screen_intent_permission_title"
420+
android:textSize="@dimen/headline_text_size" />
421+
422+
<com.google.android.material.textview.MaterialTextView
423+
android:id="@+id/full_screen_intent_permission_subtitle"
424+
android:layout_width="wrap_content"
425+
android:layout_height="wrap_content"
426+
tools:text="@string/full_screen_intent_permission_granted" />
427+
</LinearLayout>
428+
408429
<LinearLayout
409430
android:id="@+id/settings_call_sound"
410431
android:layout_width="match_parent"

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ How to translate with transifex:
123123
<string name="battery_optimization_not_ignored">Battery optimization is enabled which might cause issues. You should disable battery optimization!</string>
124124
<string name="battery_optimization_ignored">Battery optimization is ignored, all fine</string>
125125
<string name="notification_permission">Notification permissions</string>
126+
<string name="full_screen_intent_permission_title">Show incoming call over lock screen</string>
127+
<string name="full_screen_intent_permission_granted">Incoming call screen over lock screen is granted, all fine</string>
128+
<string name="full_screen_intent_permission_not_granted">Incoming call screen over lock screen is not granted. Please grant this so incoming calls appear on the lock screen!</string>
126129

127130

128131
<string name="nc_settings_appearance">Appearance</string>

0 commit comments

Comments
 (0)