2016-12-22 12 views
12

Łączę Firebase, aby obsługiwać funkcję Deeplink w aplikacji. Zauważyłem w jednym z przykładów ekranu sugerującym (PFA) here, że możemy dodać własny własny tekst zamiast wyświetlać precyzyjny URL linku.Jak dodać tekst niestandardowy zamiast adresu URL w wiadomości Deeplink

enter image description here

Próbowałem aktualizować, ale to nie pomogło. Jak to zrobić, Wszelkie sugestie?

+0

Wygląda na to, że są po prostu tworzenie HTML z link w znaczniku zakotwiczenia. – riggaroo

+0

To wygląda tak samo. Ale nie mam pojęcia, jak to zrobić w SMS-ie z Deep Link. Chciałem zamiast tego wyświetlić tekst z hiperłączami, jeśli jest pełny adres URL. Jakieś sugestie ? – CoDe

+1

Nie sądzę, że jest to SMS w tym przykładzie, o ile wiem, że SMS-y nie są sformatowane przez HTML, więc nie byłoby to możliwe. – riggaroo

Odpowiedz

0

Domyślam się, że używasz UITextView, gdy użytkownik wprowadza tekst (w iOS). Oto jak tego dokonać w 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 
    } 
} 

w Android, znalazłem parę SO odpowiedzi, które wydają się obsługiwać ten temat również:

Make a hyperlink textview in android

Od user370305:

Wypróbuj to i daj mi znać, co się stanie ..

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)); 

Put html link in edittext android

Od robinhood:

Połóż html w ciąg @

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

ustawionej String do EditText @

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

Dla kliknięcia ustaw LinkMovementMethod z konieczność y action @

youredittext.setMovementMethod(LinkMovementMethod.getInstance()); 

jeśli starają się osiągnąć to w HTML, a następnie użyć kotwicy (a) tag:

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

+0

Caleb, nie mówię tylko po to, aby utworzyć hiperłącze. W jaki sposób możemy przekonwertować Głęboki link na Tekst hiperłącza i możemy wysłać go informując o SMS-ach. Jakieś sugestie ? – CoDe

+0

@Shubh Przepraszam. Jestem trochę zdezorientowany co do tego, czego chcesz. Czy możesz to wyjaśnić trochę więcej? –

+0

W tekście SMS o bezpośrednim łączu chcę zastąpić adres URL linku precyzyjnego hiperłączem małym tekstem. – CoDe

0

Zrobiłem to samo w jednej z moich aplikacji. Proszę postępować zgodnie z poniższym kodem.

<?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> 

Przełóż TextView poniżej metody (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); 
    } 

Lub możesz skorzystać z poniższego kodu:

dodać widok tekstowy, jak poniżej, zmiany bez względu na atrybuty, jak chcesz.

<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" /> 

następnie dodać poniżej kodu:

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()); 

upewnij się, gdy dodasz linki zastąpić je znaczniki HTML jak ja na przykład String html = "Hi sweetheart go to <a href=\"http://www.google.com\">this</a> link";

+0

To nie jest przypadek @TdSoft. Pytam, czy możemy wyświetlić tekst hiperłącza zamiast wyświetlać adres URL linku linkującego. Jakąkolwiek wskazówkę? – CoDe

+0

@Shubh Edytowałem kod, proszę sprawdzić. – TdSoft

+0

Ale to nie zadziała, jeśli zrobisz SMS-a. Uważa tag HTML za zwykły tekst i dlatego nie tworzy tekstu z hiperłączami. – CoDe

Powiązane problemy