diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 10b27e5e2..26a2c8c0a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -79,11 +79,14 @@
+
+
+
diff --git a/app/src/main/java/org/linphone/activities/main/MainActivity.kt b/app/src/main/java/org/linphone/activities/main/MainActivity.kt
index fc3600dd4..6a9d2cfb7 100644
--- a/app/src/main/java/org/linphone/activities/main/MainActivity.kt
+++ b/app/src/main/java/org/linphone/activities/main/MainActivity.kt
@@ -189,38 +189,26 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
}
}
Intent.ACTION_VIEW -> {
+ val uri = intent.data
if (intent.type == AppUtils.getString(R.string.linphone_address_mime_type)) {
- val contactUri = intent.data
- if (contactUri != null) {
- val contactId = coreContext.contactsManager.getAndroidContactIdFromUri(contactUri)
+ if (uri != null) {
+ val contactId = coreContext.contactsManager.getAndroidContactIdFromUri(uri)
if (contactId != null) {
val deepLink = "linphone-android://contact/view/$contactId"
- Log.i("[Main Activity] Found contact URI parameter in intent: $contactUri, starting deep link: $deepLink")
+ Log.i("[Main Activity] Found contact URI parameter in intent: $uri, starting deep link: $deepLink")
findNavController(R.id.nav_host_fragment).navigate(Uri.parse(deepLink))
}
}
+ } else {
+ if (uri != null) {
+ handleTelOrSipUri(uri)
+ }
}
}
Intent.ACTION_DIAL, Intent.ACTION_CALL -> {
val uri = intent.data
if (uri != null) {
- Log.i("[Main Activity] Found uri: $uri to call")
- val stringUri = uri.toString()
- var addressToCall: String = stringUri
- try {
- addressToCall = URLDecoder.decode(stringUri, "UTF-8")
- } catch (e: UnsupportedEncodingException) { }
-
- if (addressToCall.startsWith("sip:")) {
- addressToCall = addressToCall.substring("sip:".length)
- } else if (addressToCall.startsWith("tel:")) {
- addressToCall = addressToCall.substring("tel:".length)
- }
-
- Log.i("[Main Activity] Starting dialer with pre-filled URI $addressToCall")
- val args = Bundle()
- args.putString("URI", addressToCall)
- navigateToDialer(args)
+ handleTelOrSipUri(uri)
}
}
else -> {
@@ -254,6 +242,25 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
}
}
+ private fun handleTelOrSipUri(uri: Uri) {
+ Log.i("[Main Activity] Found uri: $uri to call")
+ val stringUri = uri.toString()
+ var addressToCall: String = stringUri
+ try {
+ addressToCall = URLDecoder.decode(stringUri, "UTF-8")
+ } catch (e: UnsupportedEncodingException) { }
+
+ if (addressToCall.startsWith("tel:")) {
+ Log.i("[Main Activity] Removing tel: prefix")
+ addressToCall = addressToCall.substring("tel:".length)
+ }
+
+ Log.i("[Main Activity] Starting dialer with pre-filled URI $addressToCall")
+ val args = Bundle()
+ args.putString("URI", addressToCall)
+ navigateToDialer(args)
+ }
+
private fun handleSendText(intent: Intent) {
intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
sharedViewModel.textToShare.value = it
diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt
index 00758f8c2..68c33d7ed 100644
--- a/app/src/main/java/org/linphone/core/CoreContext.kt
+++ b/app/src/main/java/org/linphone/core/CoreContext.kt
@@ -255,7 +255,7 @@ class CoreContext(val context: Context, coreConfig: Config) {
core.zrtpSecretsFile = corePreferences.zrtpSecretsPath
core.callLogsDatabasePath = corePreferences.callHistoryDatabasePath
- core.staticPicture = corePreferences.staticPicture
+ core.staticPicture = corePreferences.staticPicturePath
initUserCertificates()
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt
index f6f92ff26..3414e8f8f 100644
--- a/app/src/main/java/org/linphone/core/CorePreferences.kt
+++ b/app/src/main/java/org/linphone/core/CorePreferences.kt
@@ -253,6 +253,12 @@ class CorePreferences constructor(private val context: Context) {
config.setBool("net", "use_legacy_push_notification_params", value)
}
+ var defaultAccountAvatarPath: String?
+ get() = config.getString("app", "default_avatar_path", null)
+ set(value) {
+ config.setString("app", "default_avatar_path", value)
+ }
+
/* Read only application settings, some were previously in non_localizable_custom */
val defaultDomain: String
@@ -289,7 +295,7 @@ class CorePreferences constructor(private val context: Context) {
get() = config.getBool("app", "show_border_on_big_contact_avatar", true)
val checkIfUpdateAvailableUrl: String?
- get() = config.getString("misc", "version_check_url_root", null)
+ get() = config.getString("misc", "version_check_url_root", "https://linphone.org/releases/android/RELEASE")
val checkUpdateAvailableInterval: Int
get() = config.getInt("app", "version_check_interval", 86400000)
@@ -321,12 +327,6 @@ class CorePreferences constructor(private val context: Context) {
/* Side Menu */
- var defaultAccountAvatarPath: String?
- get() = config.getString("app", "default_avatar_path", null)
- set(value) {
- config.setString("app", "default_avatar_path", value)
- }
-
val showAccountsInSideMenu: Boolean
get() = config.getBool("app", "side_menu_accounts", true)
@@ -374,11 +374,6 @@ class CorePreferences constructor(private val context: Context) {
val showAdvancedSettings: Boolean
get() = config.getBool("app", "settings_advanced", true)
- /* Other stuff */
-
- private val darkModeAllowed: Boolean
- get() = config.getBool("app", "dark_mode_allowed", true)
-
/* Assets stuff */
val configPath: String
@@ -405,9 +400,14 @@ class CorePreferences constructor(private val context: Context) {
val callHistoryDatabasePath: String
get() = context.filesDir.absolutePath + "/linphone-log-history.db"
- val staticPicture: String
+ val staticPicturePath: String
get() = context.filesDir.absolutePath + "/share/images/nowebcamcif.jpg"
+ /* Other stuff */
+
+ private val darkModeAllowed: Boolean
+ get() = config.getBool("app", "dark_mode_allowed", true)
+
fun copyAssetsFromPackage() {
copy("linphonerc_default", configPath)
copy("linphonerc_factory", factoryConfigPath, true)