Kamis, 15 Juni 2017

Cara Membuat Link Pada Android

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

0 komentar:

Posting Komentar