Membuat Link Pada TextView Android

written by Arief Bayu Purwanto on November 29, 2011 in Tutorial with 4 comments

Tutorial android kali ini, tentang cara membuat link pada TextView. Bagi anda yang belum tahu, TextView juga menerima text berupa HTML. Membuat link di TextView ini gampang-gampang susah, ada sedikit trik yang harus diberikan.

Free Image Hosting at www.ImageShack.us

Cara membuat link di TextView cukup sederhana, yaitu dengan memanfaatkan Html.fromHtml():

StringBuilder html = new StringBuilder();
html.append( "Contoh klik, buka <a href='http://bayu.freelancer.web.id/'>URL</a>" );
html.append( " dan " );
html.append( "<a href='lauch.TCActivity://Kode?param1=isi-param'>Activity</a>" );

textView.setText( Html.fromHtml( html.toString() ) );

Perhatikan, bahwa ada dua model href yang saya gunakan. Penggunaan pertama, seperti sebagaimana kita biasanya menggunakan link di web. Apabila link tersebut di-click, maka akan membuka browser. Sedangkan cara kedua, akan dijelaskan nanti di bawah.

Potongan kode ini, kalau dijalankan, masih belum bisa membuat link pada TextView bisa di-click. Masih perlu ditambah sedikit kode:

textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());

setClickable(true) membuat TextView bisa di-click. Tapi, apa yang mau di-click? Karena kita ingin membuat link, dan link ini ingin agar bisa di-click, maka kita jelaskan dengan menggunakan setMovementMethod(LinkMovementMethod). Sekarang, link sudah bisa di-click.

Kita kembali ke cara penggunaan kedua. Cara ini cukup berguna bila kita ingin link yang di-click nanti, membuka activity baru. Cara penggunaan (selain dengan membuat link, tentunya) adalah dengan menambahkan definisi Activity baru di AndroidManifest.xml.

<activity android:name="TCActivity">
	<intent-filter>
		<category android:name="android.intent.category.DEFAULT" />
		<action android:name="android.intent.action.VIEW" />
		<data android:scheme="lauch.TCActivity" />  
	</intent-filter>            
</activity>

Penjelasan kode di atas adalah, activity TCActivity akan dijalankan, bila menerima data dari skema URL lauch.TCActivity. Skema URL ini, diperoleh dari setting href yang kita berikan di HTML.

Kalau sudah bisa membuka Activity, lantas bagaimana kita mendapatkan informasi parameter dan lainnya dari URL tersebut? Jawabannyak cukup sederhana, cukup dengan menggunakan Activity.getIntent().getData(). Sebagai contoh, untuk URL berikut:

lauch.TCActivity://Kode?param1=isi-param

Maka, kita bisa memperoleh informasi dengan cara:

Uri data = getIntent().getData();
Log.i( "LOG", "FULL URI: " + data.toString());
Log.i( "LOG", "QUERY: " + data.getQuery());
Log.i( "LOG", "HOST:" + data.getHost());
Log.i( "LOG", "PARAM1:" + data.getQueryParameter( "param1" ));

Yang hasilnya adalah:

FULL URI: lauch.TCActivity://Kode?param1=isi-param
QUERY: param1=isi-param
HOST: Kode
PARAM1: isi-param