test react profundo linking link enlace custom android ios firebase deep-linking firebase-dynamic-links

android - profundo - react navigation deep linking



Cómo agregar texto personalizado en lugar de URL en el mensaje de Deeplink (2)

Estoy integrando Firebase para admitir la función Deeplink en la aplicación. He visto en una de las pantallas de ejemplo sugeridas (PFA) aquí que podemos agregar nuestro propio texto personalizado en lugar de mostrar la URL de enlace profundo.

Intenté actualizar pero eso no ayudó. ¿Cómo hacer eso? ¿Alguna sugerencia?


He hecho lo mismo en una de mis aplicaciones. Por favor, siga el código a continuación.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="@dimen/margin" tools:context="tdsolutions.com.clickabletext.MainActivity"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World this text" /> </LinearLayout>

Pase su Textview al siguiente método (setClickableText):

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView text = (TextView) findViewById(R.id.text); setClickableText(text); } private void setClickableText(TextView textView) { String text = "this"; // the text you want to mark as a link SpannableString ss = new SpannableString(textView.getText());// full text final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.parseColor("#91ca46"));//link text color ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View textView) { //What ever the code you want when click on text goes here Toast.makeText(MainActivity.this,"you clicked",Toast.LENGTH_LONG).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(false); } }; int start = textView.getText().toString().indexOf(text); int length = start + text.length(); ss.setSpan(clickableSpan, start, length, Spanned.SPAN_INCLUSIVE_INCLUSIVE); ss.setSpan(fcs, start, length, Spanned.SPAN_INCLUSIVE_INCLUSIVE); textView.setText(ss); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setHighlightColor(Color.TRANSPARENT); }

O puede usar el siguiente código:

Agregue la vista de texto de la siguiente manera, cambie los atributos que desee.

<TextView android:id="@+id/textView" android:layout_centerInParent="true" android:linksClickable="true" android:textColorLink="#00f" android:layout_width="wrap_content" android:layout_height="wrap_content" />

luego agregue el siguiente código:

TextView textView = (TextView) findViewById(R.id.textView); Spanned result; String html = "Hi sweetheart go to <a href=/"http://www.google.com/">this</a> link"; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { result = Html.fromHtml(html ,Html.FROM_HTML_MODE_LEGACY); } else { result = Html.fromHtml(html); } textView.setText(result); textView. setMovementMethod(LinkMovementMethod.getInstance());

asegúrese de que cuando agrega enlaces, reemplácelos con etiquetas html como lo hice en el ejemplo String html = "Hi sweetheart go to <a href=/"http://www.google.com/">this</a> link";


Supongo que está utilizando una UITextView para cuando el usuario ingresa texto (en iOS). Aquí es cómo lograr eso en Swift:

class ViewController: UIViewController { @IBOutlet weak var textView: UITextView! @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func buttonPress(_ sender: Any) { let range = textView.selectedRange let linkString = NSMutableAttributedString(string: textView.text) linkString.addAttribute(NSLinkAttributeName, value: textField.text ?? "", range: range) textView.attributedText = linkString } } extension ViewController: UITextViewDelegate { func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { UIApplication.shared.open(URL, options: [:], completionHandler: nil) return false } }

En Android, encontré un par de respuestas SO que parecen manejar bien el tema:

Hacer una vista de texto de hipervínculo en Android

Desde user370305:

Prueba esto y avísame qué pasa ...

TextView textView =(TextView)findViewById(R.id.textView); textView.setClickable(true); textView.setMovementMethod(LinkMovementMethod.getInstance()); String text = "<a href=''http://www.google.com''> Google </a>"; textView.setText(Html.fromHtml(text));

Poner enlace html en edittext android

De RobinHood:

Pon tu html en una cadena @

<string url="link">&lt;a href="http://www.google.com">Google&lt;/a></string>

establecer String para editar el texto @

youredittext.setText(Html.fromHtml(getResources().getString(R.string.url)));

Para hacer clic, configure LinkMovementMethod con la acción necesaria @

youredittext.setMovementMethod(LinkMovementMethod.getInstance());

Si está tratando de lograr esto en HTML, use una etiqueta de anclaje ( a ):

<p>Click on this <a href="https://.com/">Link</a></p>