From daf38ad16232252503df59653efb4eb3958e0b7e Mon Sep 17 00:00:00 2001 From: Nick O'Neill Date: Tue, 9 Sep 2025 09:39:02 -0700 Subject: [PATCH] initial implementation of dial picker --- 5calls/app/src/main/AndroidManifest.xml | 6 +++- .../a5calls/controller/RepCallActivity.java | 31 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/5calls/app/src/main/AndroidManifest.xml b/5calls/app/src/main/AndroidManifest.xml index a7b3a024..662bfcd1 100644 --- a/5calls/app/src/main/AndroidManifest.xml +++ b/5calls/app/src/main/AndroidManifest.xml @@ -94,12 +94,16 @@ - + + + + + \ No newline at end of file diff --git a/5calls/app/src/main/java/org/a5calls/android/a5calls/controller/RepCallActivity.java b/5calls/app/src/main/java/org/a5calls/android/a5calls/controller/RepCallActivity.java index 9d74f502..b048907b 100644 --- a/5calls/app/src/main/java/org/a5calls/android/a5calls/controller/RepCallActivity.java +++ b/5calls/app/src/main/java/org/a5calls/android/a5calls/controller/RepCallActivity.java @@ -23,6 +23,9 @@ import android.text.TextUtils; import android.text.util.Linkify; +import android.text.style.UnderlineSpan; +import android.text.SpannableString; +import android.graphics.Paint; import android.util.DisplayMetrics; import android.util.Patterns; import android.view.LayoutInflater; @@ -30,6 +33,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import android.widget.Toast; import com.bumptech.glide.Glide; @@ -396,10 +400,27 @@ private int getSpanCount(Activity activity) { return (int) (displayMetrics.widthPixels / minButtonWidth); } - private static void linkPhoneNumber(TextView textView, String phoneNumber) { - textView.setText(phoneNumber); - Linkify.addLinks(textView, Patterns.PHONE, "tel:", - Linkify.sPhoneNumberMatchFilter, - Linkify.sPhoneNumberTransformFilter); + private void linkPhoneNumber(TextView textView, String phoneNumber) { + SpannableString spannableString = new SpannableString(phoneNumber); + spannableString.setSpan(new UnderlineSpan(), 0, phoneNumber.length(), 0); + textView.setText(spannableString); + textView.setClickable(true); + textView.setFocusable(true); + textView.setTextColor(getResources().getColor(R.color.colorAccent, null)); + textView.setOnClickListener(v -> { + Intent dialIntent = new Intent(Intent.ACTION_DIAL); + dialIntent.setData(android.net.Uri.parse("tel:" + phoneNumber)); + + try { + Intent chooser = Intent.createChooser(dialIntent, "Choose phone app"); + startActivity(chooser); + } catch (android.content.ActivityNotFoundException e) { + try { + startActivity(dialIntent); + } catch (android.content.ActivityNotFoundException e2) { + Toast.makeText(this, "No phone app available to make calls", Toast.LENGTH_SHORT).show(); + } + } + }); } }