Hallo pembaca setia oimtrust?
Bagi kalian yang baru belajar membuat aplikasi android. Mungkin tutorial ini bermanfaat buat kalian semua. oimtrust harap sih begitu, hehe. Nah, pembahasan kali ini adalah membuat aplikasi webview sederhana dengan memperiksa apabila tidak ada koneksi internet.
Nah, kapan kita menggunakan webview? itu tergantung dari aplikasi yang nantinya akan kita buat. Contoh-nya webview itu seperti apa sih? Yah apa yaaa... ketika kalian buka aplikasi, terus aplikasi itu me-load dari browser, misalkan telegram ketika ada link yang kita buka. itu kurang lebih menggunakan webview. dan masih banyak lagi contoh-contoh yang lain.
Sekarang, marilah kita buat aplikasi webview sederhana. Untuk langkah-langkah pertama membuat aplikasi android oimtrust rasa teman-teman sudah bisa. Apabila belum bisa teman-teman bisa membaca tutorial dari blog lain atau dari dokumentasinya langsung disini.
Apabila telah memulai membuat aplikasi android (Default: aplikasi teman-teman sudah tersedia MainActivity.java dan activity_main.xml) buatlah activity baru dengan nama WebsiteActivity.java (Ingat!! pilihlah Empty Activity).
Allright, kita memulai project baru dengan nama aplikasi bebas dengan keinginan kalian sendiri. Apabila kalian telah membuat project baru. Pada file activity_main.xml ubahlah seperti ini :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:orientation="vertical" | |
tools:context="net.oimtrust.MainActivity"> | |
<TextView | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:textSize="24sp" | |
android:gravity="center" | |
android:textStyle="bold" | |
android:textColor="@color/colorYellow" | |
android:text="@string/loading"/> | |
<ProgressBar | |
style="?android:attr/progressBarStyleLarge" | |
android:layout_width="154dp" | |
android:layout_height="wrap_content" | |
android:id="@+id/progressBar" | |
android:layout_gravity="center_horizontal" | |
android:indeterminate="false" | |
/> | |
</LinearLayout> |
Pada activity_main.xml ini kita gunakan untuk memberitahukan kepada user bahwa aplikasi ini membutuhkan koneksi internet. Maka, diperlukan sebuah view yang menunjukkan kepada user menggunakan ProgressBar.
Selanjutnya pada file activity_website.xml (Aktiviti ini muncul otomatis ketika kalian membuat aktiviti WebsiteActivity.java) silahkan kalian tulis seperti ini :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<RelativeLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
tools:context="net.oimtrust.WebsiteActivity"> | |
<WebView | |
android:id="@+id/showWebView" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
</WebView> | |
</RelativeLayout> |
Nah, pada file activity_website.xml ini digunakan untuk menampilkan link url website yang kita masukkan kedalam webview. Lalu, apakah sampai sini sudah selesai? Oh tentu belum. Selanjutnya kita akan menggunakan logic di java untuk mengeksekusi aplikasi ini.
Next, bukalah file MainActivity.java dan tulislah kode program seperti ini : (Ingat, sesuaikan dengan aplikasi yang kalian tulis. Dipahami jangan di COPAS). Sip..
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.Context; | |
import android.content.DialogInterface; | |
import android.content.Intent; | |
import android.net.ConnectivityManager; | |
import android.net.NetworkInfo; | |
import android.support.v7.app.AlertDialog; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
public class MainActivity extends AppCompatActivity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
if (!isNetworkAvailable()){ | |
//Create an alertDialog | |
AlertDialog.Builder checkBuilder = new AlertDialog.Builder(MainActivity.this); | |
checkBuilder.setIcon(R.drawable.error); | |
checkBuilder.setTitle("Peringatan!"); | |
checkBuilder.setMessage("Periksa koneksi internet anda!"); | |
//Builder retry button | |
checkBuilder.setPositiveButton("Ulangi", new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialogInterface, int i) { | |
//Restart the activity | |
Intent intent = getIntent(); | |
finish(); | |
startActivity(intent); | |
} | |
}); | |
checkBuilder.setNegativeButton("Keluar", new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialogInterface, int i) { | |
finish(); | |
} | |
}); | |
AlertDialog alert = checkBuilder.create(); | |
alert.show(); | |
} | |
else { | |
if (isNetworkAvailable()){ | |
Thread thread = new Thread(){ | |
public void run(){ | |
try { | |
sleep(4500); | |
} | |
catch (Exception e){ | |
e.printStackTrace(); | |
} | |
finally { | |
startActivity(new Intent(MainActivity.this, WebsiteActivity.class)); | |
finish(); | |
} | |
} | |
}; | |
thread.start(); | |
} | |
} | |
} | |
private boolean isNetworkAvailable() { | |
ConnectivityManager connectivityManager = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE); | |
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); | |
return activeNetworkInfo != null; | |
} | |
} |
Pada file MainActivity.java ini kita membuat sebuah handling error ketika ada tidaknya koneksi internet. Apabila ada koneksi internet maka akan membuka website yang dituju, dan apabila tidak ada koneksi internet maka akan memberikan peringatan kepada user bahwa aplikasi ini tidak akan berjalan seperti yang diharapkan.
Nah, ketika teman-teman menulis kode ini pasti akan mengalami error ketika memanggil data dari drawable. Silahkan download gambar icon berikut disini untuk mengatasi error tersebut. Selanjutnya, handling error ini tidak akan berjalan apabila kita belum memberikan hak akses atau permission. Pada file manifests/AndroidManifest.xml berilah permission seperti berikut ini :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | |
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> | |
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> |
Next again, bukalah pada file WebsiteActivity.java dan tulislah kode seperti berikut ini:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.DialogInterface; | |
import android.content.Intent; | |
import android.support.v7.app.AlertDialog; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.view.KeyEvent; | |
import android.view.Window; | |
import android.webkit.WebResourceRequest; | |
import android.webkit.WebView; | |
import android.webkit.WebViewClient; | |
public class WebsiteActivity extends AppCompatActivity { | |
String url = "http://www.oimtrust.net/"; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
this.requestWindowFeature(Window.FEATURE_NO_TITLE); | |
setContentView(R.layout.activity_website); | |
getSupportActionBar().hide(); | |
WebView siteWeb = (WebView) findViewById(R.id.showWebView); | |
siteWeb.getSettings().setJavaScriptEnabled(true); | |
siteWeb.getSettings().setLoadWithOverviewMode(true); | |
siteWeb.getSettings().setUseWideViewPort(true); | |
siteWeb.setWebViewClient(new MyWebViewClient()); | |
siteWeb.loadUrl(url); | |
} | |
public void exit(){ | |
AlertDialog.Builder builder = new AlertDialog.Builder(this); | |
builder.setMessage("Anda yakin untuk keluar?") | |
.setCancelable(false) | |
.setPositiveButton("Iya", new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialog, int which) { | |
Intent intent = new Intent(Intent.ACTION_MAIN); | |
intent.addCategory(Intent.CATEGORY_HOME); | |
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | |
startActivity(intent); | |
} | |
}) | |
.setNegativeButton("Tidak", new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialog, int which) { | |
dialog.cancel(); | |
} | |
}); | |
AlertDialog alert = builder.create(); | |
alert.show(); | |
} | |
public boolean onKeyDown(int keyCode, KeyEvent event){ | |
if (keyCode == KeyEvent.KEYCODE_BACK){ | |
exit(); | |
} | |
return super.onKeyDown(keyCode, event); | |
} | |
private class MyWebViewClient extends WebViewClient { | |
@Override | |
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { | |
view.loadUrl(url); | |
return true; | |
} | |
} | |
} |
Nah, pada file WebsiteActivity.java kita memanggil url yang ingin ditampilkan. Dalam kasus yang oimtrust tulis menggunakan alamat http://www.oimtrust.net/ silahkan sesuai dengan url yang ingin kalian jalankan.
Silahkan kalian jalankan aplikasinya, dan semoga berhasil. Hasil akhirnya nanti seperti gambar dibawah ini :
Apabila tidak terkoneksi dengan internet :
Dan apabila terkoneksi dengan internet maka akan muncul seperti ini :
Source code bisa teman-teman download disini :