linphone-android
linphone-android copied to clipboard
Incoming call numbers in national format aren't matched to contacts saved in international format
Hi template, hi people, wish you a nice morning.
This is more a missing feature than a bug but Github didn't offer not using the template.
- Describe the bug (mandatory)
I use Linphone from F-Droid with a SIP Account. Not a Belledonne Comms Account.
When someone calls me, the provider sends the origin number, if from the same country as 0
- To Reproduce (mandatory)
Save a contact in international fornat through Android Contacts. In the normal phone number field. Not the SIP field. I do not want to save a number in different formats redundantly because that messes up other contact provider users data interpretation. Use any SIP to Phone carrier with behaviour described above and get called by the saved contact.
- Expected behavior (mandatory)
Linphobe, knowing which country code it is in, should match local format incoming numbers. (It autodetected my country prefix from android region settings just fine.)
- Please complete the following information (mandatory)
- Device: Pixel
- OS: Android 14
- Linphone Android 5.1.4 (tags/5.1.4^0, release)
- Linphone SDK 5.2.99 (tags/5.2.99^0, release)
- Where you did got it from: F-Droid
- Graphene
- SDK logs (mandatory)
Not applicable because its not an error but a missing feature.
- Adb logcat logs (mandatory if native crash)
Not a crash.
- Screenshots (optionnal)
Not.
- Additional context (optionnal)
Not.
Hi @schichtnudelauflauf,
Can you check your account settings and make sure the prefix has been correctly set?
This isn't a missing feature it is supposed to work. I just tried with my device and it works fine for my test case.
Cheers,
I just checked again before filing that bug. The incoming numbers in call log are in the format "sip:0<area><number>@gatewayservice.whatever". The contacts are "+49<areacode><number>" in the number field of my synced contact provider. The set prefix in account settings is "49" without + as told in the string below that field.
Can you please attach the debug logs from the app then ?
On Android there is no button to get the logs myself. Only a field where I can send it to some server. I won't send raw debug data to you without censoring it. How can I fetch that locally? The wiki says I can do "Send logs" in "About", but there is no such thing. There is "Send logs"in Settings > Advanced but that tries to send to that log server. I tried tapping version strings repeatedly like other debug screens are hidden in the Android world but nothing there. I don't have a computer near me that I trust enough to fetch adb logcat with.
If you don't want to use adb logcat nor use our log upload feature that will be hard for you to get the logs...
Please do not interpret the following in an insulting way. I am very grateful that this thing exists and you and your org took the effort to create it without me paying anything for it.
As I am in the dilemma, that Linphone seems to be the only working open SIP app for Android at all and its one of the worst UX apps that exists and I need an open SIP client... I might soon send you code for an export-to share button. Are you open for suggestions for a bigger UX overhaul and according PRs?
Do you have any docs about what the log sender speaks so that I can spin up my own logserver?
You'll be happy to know we are working on a new UX/UI that is scheduled to be ready and published at the end of June, 2024. It has been designed with the help of a specialized UX company, and the first tests with users are great!
Cool stuff, are there beta builds available outside of Playstore?
I got home to my PC to get logcats.
Maybe noteworthy things:
- It sees the contacts and has contact permission.
- It does not have read phone state permission.
- The SIP "From:" line has format:
From: "011111111111" <sip:[email protected]>;tag=someid
- I use a secondary user profile.
- In the line about setting the display name, there is no time-related other context.
- Neither around the "Contact:" lines in call timeframes.
- I set adb loglevel to '*:D'.
- I activated debug logging in Linphone.
- I got many "D" log lines but most were about the main loop state.
- I saw no details about the contact or display name wrangling in the full logfile. I read every single line.
Logstuff related to contacts containing private data:
I Linphone: Contact: <sip:011111111111@mysipipaddress:mysipport>
I Linphone: New incoming call from ["011111111111" <sip:[email protected]>] to [sip:[email protected]]
I Linphone: Updating sip address display name in database: `sip:[email protected]`.
E Linphone: Unable to retrieve contact address from proxy confguration for call session 0xd91069255b78 (local address sip:[email protected] remote address "011111111111" <sip:[email protected]>).
I Linphone: [Notifications Manager] No conference info found for remote contact address sip:011111111111@mysipipaddress:mysipport
I Linphone: Removing the call (local address sip:[email protected] remote address "011111111111" <sip:[email protected]>) from the list attached to the core
Other logstuff that does not contain any data. (I removed device info that isn't related, network, crypto, cam, audiostuff). I left in other Linphone setup stuff and some environment related errors. None of those errors look related to the contact provider or contact string conversion.
W ActivityThread: getPackageInfo() called with an older ApplicationInfo than the cached version for package org.linphone
W NotifHistoryProto: notification package name (org.linphone) not found in string cache
W NotifHistoryProto: notification channel name (Linphone service notification) not found in string cache
W NotifHistoryProto: notification channel id (linphone_notification_service_id) not found in string cache
W ActivityThread: getPackageInfo() called with an older ApplicationInfo than the cached version for package org.linphone
W Linphone: [Data Binding] [Coil] Can't load null
I Linphone: Start measurement of [Get call history.].
I Linphone: Duration of [Get call history.]: 33ms.
I Linphone: [Call Logs] 100 call logs found
I Linphone: [Notifications Manager] Canceling [10] with tag [Missed call]
I Linphone: linphoneAccountIsServerConfigChanged : 1
I Linphone: Publish params have changed on account [0xd97da5fe2108]
I Linphone: Notifying all friends that we are [closed]
I Linphone: [Main Activity] Handling intent with action [android.intent.action.MAIN], type [null] and data [null]
I Linphone: linphoneAccountIsServerConfigChanged : 1
I Linphone: Start measurement of [Get call history.].
I Linphone: Duration of [Get call history.]: 9ms.
I Linphone: [Call Logs] 100 call logs found
I Linphone: Linphone core [0xda0b13482800] notified [call_log_updated]
W Linphone: BctbxException occurred:
W Linphone: Fail to increase socket's recv buffer size with SO_RCVBUFFORCE: Operation not permitted.
W Linphone: Fail to increase socket's send buffer size with SO_SNDBUFFORCE: Operation not permitted.
W Linphone: Fail to increase socket's recv buffer size with SO_RCVBUFFORCE: Operation not permitted.
I AppLocaleUtil: Can display preference - [org.linphone] : isDisallowedPackage : false / isSignedWithPlatformKey : false / hasLauncherEntry : true / canDisplay : true
I AppLocaleUtil: Can display preference - [org.linphone] : isDisallowedPackage : false / isSignedWithPlatformKey : false / hasLauncherEntry : true / canDisplay : true
I AppLocaleUtil: Can display preference - [org.linphone] : isDisallowedPackage : false / isSignedWithPlatformKey : false / hasLauncherEntry : true / canDisplay : true
W PackageConfigPersister: App-specific configuration not found for packageName: org.linphone and userId: 13
W PackageConfigPersister: App-specific configuration not found for packageName: org.linphone and userId: 13
I Linphone: linphoneAccountIsServerConfigChanged : 1
I Linphone: Publish params have changed on account [0xd97da5fe2108]
I Linphone: Notifying all friends that we are [closed]
W PackageConfigPersister: App-specific configuration not found for packageName: org.linphone and userId: 13
W PackageConfigPersister: App-specific configuration not found for packageName: org.linphone and userId: 13
W Zygote : Can't access app profile directory: /data_mirror/cur_profiles/13/org.linphone
D org.linphone: Time zone APEX ICU file found: /apex/com.android.tzdata/etc/icu/icu_tzdata.dat
D org.linphone: I18n APEX ICU file found: /apex/com.android.i18n/etc/icu/icudt70l.dat
E org.linphone: Unable to find pattern file or unable to map it for am
V GraphicsEnvironment: ANGLE Developer option for 'org.linphone' set to: 'default'
V GraphicsEnvironment: ANGLE GameManagerService for org.linphone: false
W FactoryImpl: Unable to load optional library ffmpeg-linphone: dlopen failed: library "libffmpeg-linphone.so" not found
I Linphone: [Preferences] File /data/user/13/org.linphone/files/.linphonerc already exists
I Linphone: [Preferences] Overriding /data/user/13/org.linphone/files/linphonerc by linphonerc_factory asset
I Linphone: [Preferences] Overriding /data/user/13/org.linphone/files/assistant_linphone_default_values by assistant_linphone_default_values asset
I Linphone: [Preferences] Overriding /data/user/13/org.linphone/files/assistant_default_values by assistant_default_values asset
W Linphone: [Preferences] Can't move [/data/user/13/org.linphone/files/linphone-log-history.db] to [/data/user/13/org.linphone/files/call-history.db], source file doesn't exists
I Linphone: [Application] Core config & preferences created
I Linphone: =========================================
I Linphone: ==== Linphone-android information dump ====
I Linphone: VERSION=5.1.4 / 510403
I Linphone: PACKAGE=org.linphone
W Linphone: [Push Utils] Firebase Cloud Messaging 23+ isn't available. Ensure you have a dependency on com.google.firebase:firebase-messaging (23.0.6 or newer) in your app's build.gradle file or that you use a BoM at least 'com.google.firebase:firebase-bom:30.2.0'.
W Linphone: [Core Manager] Push notifications aren't available (see push utils log)
I Linphone: [Platform Helper] Starting copy from assets to application files directory
I Linphone: [Platform Helper] Installing Resource cpim_grammar
I Linphone: [Platform Helper] Installing Resource ics_grammar
I Linphone: [Platform Helper] Installing Resource identity_grammar
I Linphone: [Platform Helper] Installing Resource sdp_grammar
I Linphone: [Platform Helper] Installing Resource vcard_grammar
I Linphone: [Platform Helper] Installing Resource nowebcamcif.jpg
I Linphone: [Platform Helper] Installing Resource rootca.pem
I Linphone: [Platform Helper] Copy from assets done
W Linphone: [Platform Helper] Device is in bucket null
I Linphone: LinphoneAccount[0xce0b7db9fb88] created with params
I Linphone: LinphoneAccount[0xce0b7db9fb88] created with proxy config
I Linphone: linphoneAccountIsServerConfigChanged : 0
I Linphone: Publish params have changed on account [0xce0b7db9fb88]
I Linphone: Invalidating friends maps for list [0xcdd6a5bb0620]
I Linphone: Using ["/data/user/13/org.linphone/files/linphone.db"] as default database path
I Linphone: Opening linphone database "/data/user/13/org.linphone/files/linphone.db" with backend Sqlite3
I Linphone: Start measurement of [Get chat rooms.].
I Linphone: Duration of [Get chat rooms.]: 1ms.
I Linphone: Using [/data/user/13/org.linphone/files/call-history.db] as legacy call history database path
I Linphone: [Context] Global state changed [Configuring]
I Linphone: Linphone core [0xce9729816000] notified [global_state_changed]
I Linphone: Linphone core [0xce9729816000] notified [configuring_status]
I Linphone: [Context] Global state changed [On]
I Linphone: [Context] Init contacts loader
W AccountManagerService: isPrivileged#Package not found org.linphone
I Linphone: [Contacts Manager] Found account with name [Linphone Kontakte] and type [org.linphone.sync]
I Linphone: [Contacts Manager] Created
I Linphone: [Contacts Loader] Loader created, first fetch
I Linphone: Linphone core [0xce9729816000] notified [global_state_changed]
W Linphone: [Permission Helper] Permission android.permission.READ_PHONE_STATE is denied
W Linphone: [Context] Can't create phone state listener, READ_PHONE_STATE permission isn't granted
I Linphone: [Context] Background mode setting is enabled, starting Service
W Linphone: [Notifications Manager] Can't start service as foreground without a service, starting it now
I Linphone: [Context] Started
I Linphone: Activity started:org.linphone.activities.main.MainActivity@bc28caf
I am affected by this bug too
Problem/bug alike: incoming calls (in app under account settings there is just switch for outgoing calls and chats) by contacts saved without international prefix are not recognized/matched, when local prefix - where place for only one (for just one country code) is reserved and useful just for outgoing calls (probability that identical 8 digit number calls from other jurisdiction is almost zero) - is not entered. Most phone apps recognize incoming CID# without specifying intl country code (matching last X digits of incoming number). Looks like apps general problem: too strict rules for matching contact (address-book) data with incoming call data (willing 100% or ideal match). P.S. I have not met any dialer app asking to enter country cod/prefix prefix to receive (or even make) calls - it is done more intuitively. Moreover this is "Contacts" issue, but the place to enter "prefix for your only one country in this globalized world" in Linphone app is not located under "Contacts" section, but under account general settings.
You'll be happy to know we are working on a new UX/UI that is scheduled to be ready and published at the end of June, 2024. It has been designed with the help of a specialized UX company, and the first tests with users are great!
Can you add me to the testers?
6.0.0 alpha is now available in master branch (public beta is pending validation from Google).
6.0.0 alpha is now available in master branch (public beta is pending validation from Google).
We will get it soon on F-Droid too?
Hi @G10h4ck,
No, it won't be soon on F-Droid as they only package releases and this is a beta. Release is currently scheduled for September.
Cheers,