From ae74f5f10d60b8859dd590e8863849099799c424 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 30 Aug 2019 13:47:28 +0200 Subject: [PATCH] Properly unescape URI when dialing from contact app --- .../org/linphone/activities/DialerActivity.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/DialerActivity.java b/app/src/main/java/org/linphone/activities/DialerActivity.java index 911bfa527..f5abeeec3 100644 --- a/app/src/main/java/org/linphone/activities/DialerActivity.java +++ b/app/src/main/java/org/linphone/activities/DialerActivity.java @@ -31,6 +31,8 @@ import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.Collection; import org.linphone.LinphoneManager; @@ -302,9 +304,15 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC if (uri != null) { Log.i("[Dialer] Intent data is: " + uri.toString()); if (Intent.ACTION_CALL.equals(action)) { - addressToCall = intent.getData().toString(); - addressToCall = addressToCall.replace("%40", "@"); - addressToCall = addressToCall.replace("%3A", ":"); + String dataString = intent.getDataString(); + + try { + addressToCall = URLDecoder.decode(dataString, "UTF-8"); + } catch (UnsupportedEncodingException e) { + Log.e("[Dialer] Unable to decode URI " + dataString); + addressToCall = dataString; + } + if (addressToCall.startsWith("sip:")) { addressToCall = addressToCall.substring("sip:".length()); } else if (addressToCall.startsWith("tel:")) {