diff --git a/src/cheogram/res/values/strings.xml b/src/cheogram/res/values/strings.xml
index 7fafc09dd99891dc66cd4f40aae204e9ed373b72..ed2152ab9b54fdf514f1432163029b5e24ec2f41 100644
--- a/src/cheogram/res/values/strings.xml
+++ b/src/cheogram/res/values/strings.xml
@@ -25,4 +25,6 @@
Go
OLED Black
Invite to Chat
+ Use Phone Accounts for Incoming Calls
+ Incoming calls from phone numbers may ring with your system dialler instead of this app\'s notification settings
diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java
index 27209a69bec1a7a948cdf5537523f8831e72b78b..c08c4c06e0bc8871cf56ddef7c84f7d6fd4aacca 100644
--- a/src/main/java/eu/siacs/conversations/services/NotificationService.java
+++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java
@@ -503,6 +503,8 @@ public class NotificationService {
private synchronized boolean tryRingingWithDialerUI(final AbstractJingleConnection.Id id, final Set media) {
if (Build.VERSION.SDK_INT < 23) return false;
+ if (!mXmppConnectionService.getPreferences().getBoolean("dialler_integration_incoming", true)) return false;
+
if (mXmppConnectionService.checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
// We cannot request audio permission in Dialer UI
// when Dialer is shown over keyguard, the user cannot even necessarily
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 610ae2fa8c76f26d641aa11f6fde71ad24fc4f03..6091a59a61161d93429ca3805414ebfac513dc13 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -4195,7 +4195,7 @@ public class XmppConnectionService extends Service {
}
}
- private SharedPreferences getPreferences() {
+ public SharedPreferences getPreferences() {
return PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
}
diff --git a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
index 4a6825b8670157ee3999295e68378dabace7f7c7..f04cfa60c0ebdfed3930709a69b6f2662186b29f 100644
--- a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
@@ -36,6 +36,7 @@ import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.OmemoSetting;
import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.services.ExportBackupService;
import eu.siacs.conversations.services.MemorizingTrustManager;
@@ -88,7 +89,26 @@ public class SettingsActivity extends XmppActivity implements OnSharedPreference
}
@Override
- void onBackendConnected() {}
+ void onBackendConnected() {
+ boolean diallerIntegrationPossible = false;
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ outer:
+ for (Account account : xmppConnectionService.getAccounts()) {
+ for (Contact contact : account.getRoster().getContacts()) {
+ if (contact.getPresences().anyIdentity("gateway", "pstn")) {
+ diallerIntegrationPossible = true;
+ break outer;
+ }
+ }
+ }
+ }
+ if (!diallerIntegrationPossible) {
+ PreferenceCategory cat = (PreferenceCategory) mSettingsFragment.findPreference("notification_category");
+ Preference pref = mSettingsFragment.findPreference("dialler_integration_incoming");
+ if (cat != null && pref != null) cat.removePreference(pref);
+ }
+ }
@Override
public void onStart() {
diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml
index 03de418917da64c9732267e60f48288ea776e069..9485344ead4a839af54c6abdfa1e0a3673dcbb78 100644
--- a/src/main/res/values/defaults.xml
+++ b/src/main/res/values/defaults.xml
@@ -45,4 +45,5 @@
360
JABBER_NETWORK
false
+ true
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index b461558364e17a73999bce7a22008292f6275cc0..8f849cdecd23c9a604f34f1207ef85d2abd94235 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -133,6 +133,11 @@
android:ringtoneType="ringtone"
android:summary="@string/pref_call_ringtone_summary"
android:title="@string/pref_ringtone" />
+