2010-04-12 11 views
8

Ich habe folgende Textview in meiner XML-Layout-Datei: -Autolink für Karte nicht funktioniert

<TextView 
    android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/autolink_test" 
     android:autoLink="all" 
/> 

Der String autolink_test enthält eine Telefonnummer, eine E-Mail-Adresse, eine Website-Adresse und eine physikalische geographische Adresse.

Während die ersten drei korrekt als anklickbare Autolinks angezeigt werden, funktioniert die Adresse nicht. Nur der Postleitzahlteil erscheint als Autolink ... und das auch als Telefonnummer! (Wenn ich darauf klicke, startet der Telefonwähler mit dieser Nummer).

Jede Hilfe wäre willkommen.

+0

Es würde helfen, wenn Sie uns sagen, was String „autolink_test“ ist; sonst schwer zu diagnostizieren. –

+0

Daniel, Danke für den Kommentar. Der Versuch, darauf zu antworten, half mir, das Problem herauszufinden! – OceanBlue

Antwort

8

OK, ich habe herausgefunden, was das Problem verursacht hat. Ich dachte nur, ich werde die Antwort hier lassen, falls jemand anderes auf dasselbe Problem stoßen sollte.

Wenn die Adresse der Straße nicht richtig groß geschrieben ist, wird sie nicht richtig als Adresse gelesen!

Hier ist meine XML autolink_test string:

<string name="autolink_test">Name: New York Times \n 
    Email: [email protected] \n 
    Phone: 212-556-7652 \n 
    Address: 620 Eighth Avenue New York, NY 10018 \n 
    Address: 620 Eighth avenue New York, NY 10018 \n 
    Website: http://www.nytimes.com 
</string> 

Die erste Adresse zeigt korrekt als Autolink auf. Der zweite (mit einem kleinen 'a' in 'Avenue') wird nicht korrekt angezeigt.

Dies scheint mir ein wenig seltsam, wie die Google Maps-Website sicherlich nicht über solche Feinheiten kümmert.

Anyways, so ist es hier :-)

+0

nette Beobachtung! – Ahsan

+0

Ich grub ein wenig tiefer und fand den tatsächlichen "' isThisAnAddress' "Code: [WebKit Quelle über JNI aufgerufen] (http://source-android.frandroid.com/external/webkit/Source/WebKit/android/nav/ CacheBuilder.cpp), der Methodenname ist 'CacheBuilder :: FindAddress'. Bei 'case FIND_STREET:' wird das Array 'longStreetNames' mit 'letter - =' A'' indiziert, daher keine Unterstützung für Kleinbuchstaben. – TWiStErRob

+0

Dies wird auch passieren, wenn Sie street/lane/address/etc nicht als Teil der Adresse angeben. – dazza5000

9

Alternative zu ihm, im Fall, wenn Autolink- nicht

hinzufügen Links zu Ihrer TexView funktioniert. Lass es als folows unterstreichen:

SpannableString spanStr = new SpannableString(buf.toString()); 
spanStr.setSpan(new UnderlineSpan(), 0, spanStr.length(), 0); 
iTextView.setText(spanStr); 

den folgenden Code Verwenden Sie es mit der Karte App auf Klick zu öffnen, wie folgt:

Intent geoIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" 
           +iTextView.getText().toString())); 
startActivity(geoIntent); 
+0

Ich entschied mich, diesen Ansatz zu verwenden, weil Autolink so "empfindlich" in Bezug darauf erscheint, was Text ist und nicht akzeptabel ist (wie der Op sagt, "Dies scheint mir ein wenig seltsam, da die Google Maps-Website sicherlich nicht interessiert über solche Feinheiten. ") Abgesehen von der Groß-/Kleinschreibung, bemerkte ich, dass das Auslassen von" Street "," Avenue "usw. auch eine" Ablehnung "der Eingabe verursachte. – hBrent

Verwandte Themen