Even better solution to properly handle links in messages
This commit is contained in:
parent
8f116a84e4
commit
3b28d1e57a
2 changed files with 3 additions and 53 deletions
|
@ -28,8 +28,8 @@ import android.content.Intent;
|
|||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.CountDownTimer;
|
||||
import android.text.Spanned;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.util.Linkify;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
@ -221,9 +221,8 @@ public class ChatMessageViewHolder extends RecyclerView.ViewHolder implements Vi
|
|||
}
|
||||
|
||||
if (message.hasTextContent()) {
|
||||
String msg = message.getTextContent();
|
||||
Spanned text = LinphoneUtils.getTextWithHttpLinks(msg);
|
||||
messageText.setText(text);
|
||||
messageText.setText(message.getTextContent());
|
||||
Linkify.addLinks(messageText, Linkify.ALL);
|
||||
messageText.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
messageText.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
|
|
@ -29,8 +29,6 @@ import android.net.NetworkInfo;
|
|||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
@ -41,7 +39,6 @@ import androidx.core.content.ContextCompat;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
import org.linphone.LinphoneContext;
|
||||
import org.linphone.LinphoneManager;
|
||||
import org.linphone.R;
|
||||
|
@ -302,52 +299,6 @@ public final class LinphoneUtils {
|
|||
}
|
||||
}
|
||||
|
||||
public static Spanned getTextWithHttpLinks(String text) {
|
||||
if (text == null) return null;
|
||||
|
||||
if (text.contains("<")) {
|
||||
text = text.replace("<", "<");
|
||||
}
|
||||
if (text.contains(">")) {
|
||||
text = text.replace(">", ">");
|
||||
}
|
||||
if (text.contains("\n")) {
|
||||
text = text.replace("\n", "<br>");
|
||||
}
|
||||
if (text.contains("http://")) {
|
||||
int indexHttp = text.indexOf("http://");
|
||||
int indexFinHttp =
|
||||
text.indexOf(" ", indexHttp) == -1
|
||||
? (text.indexOf("<br>", indexHttp) == -1
|
||||
? text.length()
|
||||
: text.indexOf("<br>", indexHttp))
|
||||
: text.indexOf(" ", indexHttp);
|
||||
String link = text.substring(indexHttp, indexFinHttp);
|
||||
String linkWithoutScheme = link.replace("http://", "");
|
||||
text =
|
||||
text.replaceFirst(
|
||||
Pattern.quote(link),
|
||||
"<a href=\"" + link + "\">" + linkWithoutScheme + "</a>");
|
||||
}
|
||||
if (text.contains("https://")) {
|
||||
int indexHttp = text.indexOf("https://");
|
||||
int indexFinHttp =
|
||||
text.indexOf(" ", indexHttp) == -1
|
||||
? (text.indexOf("<br>", indexHttp) == -1
|
||||
? text.length()
|
||||
: text.indexOf("<br>", indexHttp))
|
||||
: text.indexOf(" ", indexHttp);
|
||||
String link = text.substring(indexHttp, indexFinHttp);
|
||||
String linkWithoutScheme = link.replace("https://", "");
|
||||
text =
|
||||
text.replaceFirst(
|
||||
Pattern.quote(link),
|
||||
"<a href=\"" + link + "\">" + linkWithoutScheme + "</a>");
|
||||
}
|
||||
|
||||
return Html.fromHtml(text);
|
||||
}
|
||||
|
||||
public static void showTrustDeniedDialog(Context context) {
|
||||
final Dialog dialog = new Dialog(context);
|
||||
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
|
|
Loading…
Reference in a new issue