Penggunaan DownloadManager pada Webview

Penggunaan DownloadManager pada Webview

Assalamualaikum Warahmatullahi Wabarakatuh. Pada pembahasan kali ini kita akan membuat sebuah program agar webesite/blog yang terdapat pada webview tersebut bisa mendownload sebuah file dari link server, contohnya file dengan format mp4, mp3, mkv, 3gp, dll..

Penggunaan DownloadManager pada Webview menggunakan kotlin, setDownloadListener, CookieManager, Downloading File, mkv, mp4, mp3, 3gp, video, music, file, documen. Dari WILDAN TECHNO ART

Sebelumnya saya sudah mengupload sebuah file.txt pada Zippyshare atau kalian juga bisa menggantinya dengan link download milik kalian sendiri.

Penggunaan DownloadManager pada Webview

Buka Android Studio kalian, buatlah project baru, berinama project tersebut serta nama packagenya, disarankan saat menentukan Minimum Sdknya untuk memilih API 18 (Jellybean 4.3) atau lebih baru, karena jika OS kita API 18 kebawah, terkadang terjadi kegagalan saat mendownload.
WildanTechnoArt-Select_Minimum_SDK
Memilih Minimum SDK

Setelah selesai membuat project tersebut, lalu menuju file AndroidManifest.xml dan masukan kedua uses-permission berikut ini :
WildanTechnoArt-UsesPermission
INTERNET & WRITE_EXTERNAL_STORAGE

Penjelasan:
  • android.permission.INTERNET: Mengizinkan aplikasi membuka soket jaringan.
  • android.permission.WRITE_EXTERNAL_STORAGE: Mengizinkan aplikasi menulis ke penyimpanan eksternal.

Untuk design layoutnya, cukup menggunakan komponen webview dan RelativeLayout sebagai Containernya.

<?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="android.cianjur.developer.net.downloadmanagerexample.my_downloadManager">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/my_website"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />
    
</RelativeLayout>

Pada program yang akan kita buat, kita menggunakan sebuah method bernama setDownloadListener() yang terdapat pada webview, digunakan untuk mengunduh suatu konten pada url yang kita masukan.

package android.cianjur.developer.net.downloadmanagerexample;

import android.annotation.SuppressLint;
import android.app.DownloadManager;
import android.content.Context;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class my_downloadManager extends AppCompatActivity {

    private WebView website;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_download_manager);
        website = findViewById(R.id.my_website);
        web_settings();
        web_loaded();
    }

    @SuppressLint("SetJavaScriptEnabled")
    private void web_settings(){
        WebSettings webSettings = website.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(true);
        webSettings.setDisplayZoomControls(true);
        webSettings.setBuiltInZoomControls(true);
    }

    private void web_loaded(){
        String link = "http://www31.zippyshare.com/v/KkEOkG0X/file.html";
        website.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl(String.valueOf(Uri.parse(String.valueOf(request))));
                return super.shouldOverrideUrlLoading(view, request);
            }
        });
        website.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long l) {
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
                DownloadManager DM = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                String cookies = CookieManager.getInstance().getCookie(url);
                request.setMimeType(mimeType);
                request.addRequestHeader("cookies", cookies);
                request.addRequestHeader("uerAgent", userAgent);
                String data_file = URLUtil.guessFileName(url, contentDisposition, mimeType);
                request.setTitle(data_file);
                request.setAllowedOverRoaming(false);
                request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI|DownloadManager.Request.NETWORK_MOBILE);
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                request.allowScanningByMediaScanner();
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, data_file);
                if (DM != null) {
                    DM.enqueue(request);
                }
                Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show();
            }
        });
        website.loadUrl(link);
    }

    @Override
    public void onBackPressed() {
        if(website.canGoBack()){
            website.goBack();
        }else {
            super.onBackPressed();
        }
    }
}

Penjelasan:

Method onDownloadListener() digunakan untuk memberitahu aplikasi host bahwa file harus didownload, dengan parameter yang digunakan yaitu:
  • url: link/alamat tautan konten yang harus didownload.
  • userAgent: Kegunaannya untuk memberitahukan informasi situs web tentang browser dan sistem operasi, agar situs web bisa menyesuaikan konten untuk perangkat tertentu.
  • contentDisposition: adalah header yang menunjukkan apakah konten tersebut diharapkan ditampilkan sejajar di browser, yaitu sebagai halaman Web atau sebagai bagian dari halaman Web, atau sebagai lampiran.
  • mimeType: digunakan untuk mengirim berbagai informasi seperti text, gambar, suara, video dll agar browser tidak salah menterjemahkan konten yang diterima, jadi browser akan tahu jenis format pada file yang akan kita download, seperti mp3, mp4, mkv, dll.

Untuk meminta semua informasi yang diperlukan pada file baru yang akan kita download, kita akan menggunakan sebuah class bernama DownloadManager.Request, class ini mempunyai parameter berupa URI.

Dalam method tersebut kita juga menggunakan sebuah class bernama DownloadManager, dengan ini Klien dapat meminta agar URI (Uniform Resource Identifier) diunduh ke file tujuan tertentu. Pengelola unduhan akan melakukan unduhannya di latar belakang dan CookieManager digunakan untuk mengelola cookie pada webview.

Pada class DownloadManager.Request, disana sudah terpasang beberapa artibut yang digunakan untuk downloading, diantaranya:
  • setMimeType(): digunakan untuk menentukan jenis konten yang akan kita download.
  • addRequestHeader(): Untuk menambahkan header HTTP yang akan disertakan dengan permintaan unduhan.
  • URLUtil.guessFileName(): Menebak nama file yang bisa diunduh, yang didapat dari parameter url, contentDiposition dan mimeType.
  • setTitle(): Untuk menetapkan judul unduhan yang akan ditampilkan di notifikasi.
  • setAllowedOverRoaming(): Menetapkan apakah unduhan ini dapat dilanjutkan melalui sambungan roaming atau tidak.
  • setAllowedNetworkTypes(): Untuk membatasi jenis jaringan yang memungkinkan untuk mendownload, disini kita hanya mengunakan jenis jaringan wifi dan mobile, untuk mengaktifkan semua jenis jaringan, kalian bisa menghapus method tersebut.
  • setNotificationVisibility(): Untuk mengontraol pemberitahuan sistem, apakah diposkan/diperlihatkan oleh pengelola unduhan saat unduhan ini berjalan atau selesai, disini kita mengaktifkan pemberitahuan tersebut.
  • allowScanningByMediaScanner(): File yang akan didownload akan dipindai oleh MediaScanner.
  • setDestinationInExternalPublicDir(): Menetapkan tujuan lokal untuk file yang diunduh ke dalam direktori penyimpanan eksternal publik, file yang telah didownload akan disimpan pada Direktori Download yang terdapat pada momory external.

Dan terakhir yaitu enqueue, sebuah atribut yang terdapat pada downloadManager, digunakan untuk memulai proses downloading, Download akan dimulai secara otomatis setelah download manager siap untuk menjalankannya dan konektivitas tersedia.

Sekarang coba jalankan project tersebut menggunakan emulator atau langsung pada perangkat android kalian.
Jika kalian menggunakan link Zippyhare yang saya berikan, terkadang suka muncul iklan yang mengalihkan pada tautan lain, jika hal ini terjadi, tekan tombol back lalu klik kembali link download tersebut.
Berikut ini merupakan Screenshot dari project tersebut.
Hasil Akhir Dari Penggunaan DownloadManager pada Webview-WIldanTechnoArt
Hasil Akhir Penggunaan DownloadManager Pada Webview

Jika ada yang ingin kalian tanyakan, silakan ini kolom komentar dibawah ini, jangan lupa kunjungi terus blog WILDAN TECHNO ART, serta follow untuk mendapatkan update terbaru dan jangan lupa untuk share pada teman-teman kalian yang ingin belajar mengenai pemrograman, khususnya untuk android, Terakhir dari saya, Wassalamualaikum Warahmatullahi Wabarakatuh.

Memantau dan Menentukan Status Koneksi pada Jaringan

Memantau dan Menentukan Status Koneksi pada Jaringan

Assalamualaikum Warahmatullahi Wabarakatuh. Tutorial kali ini saya akan mengajarkan pada kalian bagaimana membuat sebuah program untuk mengevaluasi atau mengecek status konektivitas Internet dan menghandle jika terjadi error pada koneksi Internet.

Tutorial Membuat Program Untuk Cek Status Konektivitas Internet pada aplikasi Android menggunakan ConnectivityManager dan NetworkInfo. Dari WILDAN TECHNO ART.

Contohnya jika kita membuat sebuah aplikasi yang membuatuhkan akses internet dan ternyata pada prangkat tersebut tidak terhubung dengan internet atau sedang di nonaktifkan, jika hal itu terjadi maka akan muncul pesan berupa dialog atau semacamnya yang memberitahukan koneksi internet tidak terhubung.

Untuk itu kita akan mencoba membuat program sederhana bagaimana cara cek status koneksi internet pada aplikasi yang kita buat.

Membuat Program Untuk Cek Status Konektivitas Internet

1) Buka Android Studio kalian lalu Buatlah project baru, serta activity pada project yang ingin kalian buat.

2) Buka file AndroidManifest.xml yang terdapat pada project kalian, setelah itu masukan kedua uses-permission berikut ini:
WildanTechnoArt-Program-Untuk-Mengecek-Konektivitas-Internet-step1
uses-permisson INTERNET & ACCESS_NETWORK_STATE

Penjelasan:
  • android.permission.INTERNET: Mengizinkan aplikasi membuka soket jaringan.
  • android.permission.ACCESS_NETWORK_STATE: Mengijinkan aplikasi mengakses informasi tentang jaringan.

Untuk design layoutnya, buatlah sesederhana mungkin, contoh seperti berikut ini:
WildanTechnoArt-Program-Untuk-Mengecek-Konektivitas-Internet-step2
Layout Design

File activity_my_connection.xml:

<?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="android.cianjur.developer.net.checkconnectivity.my_connection">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/textview"
        android:textSize="18sp"
        android:textStyle="bold" />
    
    </RelativeLayout>


Pada Souce Code yang akan kita buat, kita menggunakan ConectivityManager dan NetworkInfo untuk mengecek status koneksi pada jaringan, jika pada perangkat tersebut tidak ada koneksi, maka akan muncul pesan berupa dialog menggunakan Alert.Builder.

package android.cianjur.developer.net.checkconnectivity;

import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class my_connection extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_connection);

        ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivity.getActiveNetworkInfo();

        if(networkInfo != null && networkInfo.isConnected()){
            Toast.makeText(getApplicationContext(),"Terhubung Dengan Internet", Toast.LENGTH_LONG).show();
        }else{
            AlertDialog.Builder alert = new AlertDialog.Builder(this)
                    .setTitle("Tidak Ada Koneksi Internet")
                    .setMessage("Silakan periksa koneksi internet anda dan coba lagi")
                    .setPositiveButton("Tutup", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            finish();
                        }
                    });
            alert.setCancelable(false);
            alert.show();
        }
    }
}

Penjelasan:
  • ConnectivityManager: Digunakan untuk memberi tahu aplikasi saat konektivitas jaringan berubah dan memantau koneksi jaringan seperti Wi-Fi, GPRS, UMTS, dll.
  • NetworkInfo: Digunakan untuk menjelaskan status antarmuka jaringan.
  • getActiveNetworkInfo: Berfungsi untuk mendapatkan sebuah instance yang mewakili koneksi jaringan saat ini.
  • Saat aplikasi dijalankan, jika terhubung dengan Internet, maka akan muncul pesan yang terdapat pada Toast.
  • Dan jika tidak terbuhung dengan Internet, AlertDialog akan muncul dan meminta untuk menutup aplikasi. 

Jika koneksi internet dimatikan pada ponsel kalian dan menjalankan aplikasi tersebut, maka akan muncul pesan/dialog seperti ini :


Dan jika ponsel kalian terhubung dengan Internet/Data Seluler kalian aktif, maka akan terlihat seperti ini:


Sekian dari saya, bila ada yang ingin ditanyakan, silakan isi komentar dibawah, jangan lupa untuk follow fansPage WILDAN TECHNO ART untuk mendapatkan update terbaru dari blog ini, Terakhir dari saya, Wassalamualaikum Warahmatullahi Wabarakatuh.

Membuat Fast Loading Webview Menggunakan Kotlin

Membuat Fast Loading Webview Menggunakan Kotlin

Assalamualaikum Warahmatullahi Wabarakatuh. Saat User ingin mengakses sebuah blog atau website pastinya memerlukan sebuah aplikasi browser seperti Chrome. UC Browser, Mozila, Dll. Jika kita mempunyai sebuah website/blog dan ingin mengubahnya menjadi sebuah aplikasi untuk di publikasikan kepada orang lain.

Membuat Webview Menggunakan Kotlin/Java dan menampilkannya pada aplikasi android, penggunaan webSettings, hardware accelerated, fast loading webview, WebViewClient, WebChromeClient. WILDAN TECHNO ART.

Pada pemrograman android terdapat sebuah class yang bernama WebView, WebView tersebut bisa kalian gunakan layakya seperti browser, tetapi tidak mempunyai address bar untuk memasukkan URL contohnya seperti google chrome,  karena URL tersebut sudah kita definisikan dalam aplikasi tersebut.

Pada kesempatan kali ini saya akan mengajarkan kalian bagaimana cara membuat sebuah webview menggunakan bahasa pemrograman kotlin, selain itu juga pada tutorial ini akan mejelaskan penggunaan WebSettings dan pengoptimalan terhadap webview tersebut, sehingga saat aplikasi memuat suatuh halaman web akan terasa cepat.

Membuat Project

1) Buka Android Studio kalian, disarankan untuk menggunakan Android Studio 3.0 CANARY.

2) Klik Start a new Android Studio project, untuk membuat project baru.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step1
Membuat Project Baru

3) Berimana aplikasi, package serta lokasi penyimpanan, jangan lupa untuk menceklis Include Kotlin support. Klik Next.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step2
Application name, Company domain, Project location, Package name

4) Tentukan minimum SDK yang akan diberikan pada project tersebut, jika sudah Klik Next.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step3
Memilih dan menentukan minimum SDK

5) Pilih Empty Activity lalu Klik Next.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step4
Memilih Jenis Activiry yang akan digunakan

6) Berinama pada activity tersebut, pastikan koneksi internet kalian sedang aktif, Untuk mendownload beberapa library yang diperlukan.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step5
Activity Name dan Layout Name

Membuat Fast Loading Webview Menggunakan Kotlin

Pada layout design, gunakan LinearLayout (Vartical) sebagai containernya lalu drag/drop komponen webiew dan progressBar (Horizontal) seperti berikut ini :
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step6
LinearLayout, ProgressBar dan Webview

Atau edit file.xmlnya seperti berikut ini, dan jangan lupa untuk memasang ID pada komponen webview dan progressBar tersebut :

<?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="kotlin.cianjur.developer.net.fastloadingwebview.webview_example">

    <ProgressBar
        android:id="@+id/loading"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <WebView
        android:id="@+id/websiteku"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Setelah selesai mendesign atau membuat file.xmlnya, sekarang masukan Source Code untuk project tersebut, pada pemrograman kotlin kita tidak perlu menggunakan findViewById(), kita bisa langsung memanggil ID dari komponen tersebut.

Baca Juga :

Coba kalian perhatikan codingan berikut ini, disana terdapat sebuah variable string yang mempunyai nilai berupa URL untuk webview tersebut, pada method onCreate sudah saya Definisikan nilai/value maksimal untuk progressBar (loading merupakan ID yang sudah saya set pada ProgressBar tersebut).

package wildan.cianjur.developer.net.fastloadingwebview

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_webview_example.*

class webview_example : AppCompatActivity() {

    private val website = "http://www.wildantechnoart.net/"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_webview_example)
        loading.max = 100
        settings()
        load_website()
    }

    private fun settings(){

    }

    private fun load_website(){

    }
}

Buatlah sebuah method, disini saya membuat 2 buah method yang bernama settings() dan load_website(), yang nanti akan kita gunakan untuk setelan atau pemasangan artibut-atribut yang akan diperlukan pada webview tersebut.

Pada method settings() masukan script/kode seperti berikut ini :

private fun settings(){
        val myWeb_settings = websiteku.settings
        myWeb_settings.javaScriptEnabled = true
        myWeb_settings.allowContentAccess = true
        myWeb_settings.useWideViewPort = true
        myWeb_settings.loadsImagesAutomatically = true
        myWeb_settings.cacheMode = WebSettings.LOAD_NO_CACHE
        myWeb_settings.setRenderPriority(WebSettings.RenderPriority.HIGH)
        myWeb_settings.setEnableSmoothTransition(true)
        myWeb_settings.domStorageEnabled = true
    }

Penjelasan :
  • Pada method tersebut terdapat sebuah variable webSettings yang digunakan untuk mengelola setelan webiew. (websiteku merupakan ID dari komponen webview tersebut).
  • javaScriptEnabled : Untuk mengaktifkan atau menonaktifkan javaScript pada webview.
  • allowContentAccess : Mengaktifkan atau menonaktifkan akses URL konten dalam WebView, fungsinya untuk memuat konten dari penyedia konten pada sistem. Defaultnya aktif/true
  • useWideViewPort : Menetapkan apakah WebView harus mengaktifkan dukungan untuk tag meta HTML "viewport" atau harus menggunakan area pandang lebar/wide viewing area.
  • loadImagesAutomativally : Mengaktifkan atau menonaktifkan pemuatan gambar pada webview, semua gambar pada konten akan dimuat secara otomatis, nilai defaultnya adalah true
  • cacheMode (LOAD_NO_CACHE) : Berfungsi agar webiew tidak menggunakan cache saat memuat jaringan.
  • setRenderPriority (RenderPriority.HIGH) : Untuk mengatur prioritas Rendering, Nilai Defaultnya adalah NORMAL, perlu kalian ketahui, motode ini tidak digunakan di tingkat API 18 (JellyBean 4.3), jadi tidak akan didukung pada versi yang mendatang.
  • setEnableSmoothTransition : Menetapkan apakah WebView memungkinkan transisi yang mulus saat melakukan panning atau zooming atau saat jendela webview tidak memiliki fokus, jika kita set menjadi true, maka webview akan memilih solusi untuk memaksimalkan kinerjanya. nilai defaultnya adalah false. (Metode ini tidak digunakan lagi di tingkat API 17)
  • domStorageEnabled : Menetapkan apakah API penyimpanan DOM diaktifkan. DOM atau Penyimpanan web, digunakan untuk menyimpan data di browser web, mirip seperti cookie namun dengan kapasitas yang sangat meningkat.

 Lalu pada method load_website() masukan script/kode berikut ini :

private fun load_website(){
        if(Build.VERSION.SDK_INT >= 19){
            websiteku.setLayerType(View.LAYER_TYPE_HARDWARE, null)
        }else{
            websiteku.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
        }
        websiteku.webChromeClient = object: WebChromeClient(){
            override fun onProgressChanged(view: WebView?, newProgress: Int) {
                loading.visibility = View.VISIBLE
                loading.progress = newProgress
                if(newProgress == 100){
                    loading.visibility = View.GONE
                }
                super.onProgressChanged(view, newProgress)
            }
        }
        websiteku.webViewClient = object: WebViewClient(){
            override fun shouldOverrideUrlLoading(view: WebView?, URL: String?): Boolean {
                view?.loadUrl(URL)
                loading.visibility = View.VISIBLE
                return true
            }
            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    view?.loadUrl(request?.url.toString())
                }
                loading.visibility = View.VISIBLE
                return true
            }

            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                loading.visibility = View.GONE
            }
        }
        
        websiteku.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
        websiteku.loadUrl(website)
    }

Penjelasan :
  • Dalam method load_website(), jika versi SDK lebih besar/sama dengan API 19 (Kitkat), maka webview tersebut akan mengset tipe layer jenis Hardware, hal ini digunakan untuk meningkatkan kualitas rendering saat transformasi rotasi diterapkan pada suatu tampilan.
  • Dan jika versi SDK dibawah API 19,  maka webview tersebut akan mengset tipe layer jenis Software.
  • Didalam WebChromeClient pada method onProgressChanged, saat aplikasi memuat suatu halaman, progressBar akan terlihat dan value/nilai pada progresBar tersebut akan terus bertambah hingga halaman selesai dimuat, setelah valuenya mencapai 100, maka progress bar akan menghilang kembali.
  • Pada webViewClient, terdapat 2 buah mothod shouldOverrideUrlLoading, pertama untuk android dengan OS Lolipop kebawah dan yang kedua untuk OS lolipop atau versi terbaru, fungsinya sama, yaitu untuk mengambil alih kontrol saat url baru akan dimuat di WebView saat ini. Jika WebViewClient tidak disediakan, secara default WebView akan meminta Activity Manager untuk memilih penangan yang tepat untuk url.
  • Pada onPageFinished, setelah halaman selesai dimuat, progressBar akan menghilang.
  • setScrollBarStyle digunakan untuk memilih gaya ScrollBar pada webView.
  • loadUrl, digunakan untuk memuat Url yang diberikan.

Tambahkan method onBackPressed(), agar aplikasi tidak langsung tertutup saat menekan tombol back, jika website pada webview tersebut bisa kembali ke halaman sebelumnya.

override fun onBackPressed() {
        if(websiteku.canGoBack()){
            websiteku.goBack()
        }else{
            super.onBackPressed()
        }
    }

Sebelum menjalankan project tersebut, jangan lupa untuk menambahkan <uses-permission> INTERNET, untuk Mengizinkan aplikasi membuka soket jaringan. serta aktifkan juga hardwareAccelerated pada tag <application>.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step7
set Uses Permission Internet dan Hadrware Accelerated

Terakhir, hilangkan ActionBar pada project kalian, supaya tampilan webview yang kita buat menjadi full screen.
WildanTechnoArt-Create-FastLoading-Webview-Kotlin_Step8
Theme.AppCompat.NoActionBar

Jalankan project tersebut menggunakan emulator atau langsung pada smartphone android kalian.

Kalian bisa mendownload Project tersebut di GitHub saya. Download Disini.

Terimakasih telah berkunjung di blog pribadi saya, semoga artikel yang saya buat ini bisa bermanfaat untuk kalian semua, jika ada yang ingin kalian tanyakan silakan isi komentar dibawah, dan jangan lupa untuk follow fansPage WILDAN TECHNO ART untuk mendapatkan update terbaru dari blog ini. Wassalamualaikum Warahmatullahi Wabarakatuh.

Belajar Pemrograman Android Menggunakan Kotlin

Belajar Pemrograman Android Menggunakan Kotlin


Assalamualaikum Warahmatullahi Wabarakatuh. Pada tutorial sebelumnya, kita sudah mempelajari dasar-dasar pembuatan aplikasi android menggunakan java. Pada kesempatan kali ini, saya akan mengajarkan kepada kalian untuk membuat sebuah aplikasi menggunakan pemrograman koltin, aplikasi yang akan kita buat cukup sederhana, seperti penggunaan button, variable, event handling, input dan output.



Java dan Kotlin berjalan pada JVM (Java Virtual Machine) yang sama, pada sebuah project aplikasi yang kalian buat bisa menggunakan kedua bahasa pemrograman tersebut secara bersamaan serta jika kalian membuat aplikasi menggunakan java, kalian bisa langsung mengconvertnya menjadi kotlin.

Kenapa disini saya memilih menggunakan kotlin dibandingkan java, itu karena kotlin memiliki syntax yang lebih simple serta modern, hampir sama dengan memprograman swift (IOS), selain itu juga, kotlin lebih aman dibandingkan bahasa pemrograman lainnya, salahsatunya mampu mencegah terjadinya NullPointerExceptions.

Membuat Project Baru

1) IDE yang akan saya gunakan yaitu Android Studio 3.0 CANARY 8, kalian bisa mendownloadnya disini. versi android stuido tersebut sudah terintegrasi dengan kotlin, jadi kalian tidak perlu mendownload pluignnya lagi, jika kalian menggunakan android studio versi 2.3/kebawah, kalian harus mndownload pluignnya terlebih dahulu.

Disarankan Koneksi Internet kalian sedang aktif, karena ada beberapa library yang harus kalian download, tapi tenang saja karena library tersebut akan secara otomatis terdownload asalkan koneksi internet kalian aktif.

2) Klik Start a new Android Studio project, untuk membuat project baru.


3) Berimana aplikasi, package serta lokasi penyimpanan dimana project kalian akan disimpan dan jangan lupa untuk menceklis Include Kotlin support. Klik Next


4) Pilihlah minimum SDK yang akan diberikan pada project tersebut, disini saya memilih API 14 (IceCreamSandwich). Klik Next.


5) Pilih activity yang akan kalian gunakan, disarankan untuk memilih Empty Activity. Klik Next.


6) Berinama pada activity yang akan kalian buat. Klik Finish. Jangan lupa sebelum kalian mengklik finish, pastikan koneksi internet kalian aktif, dikarenakan setelah ini kalian diminta untuk mendownload beberapa library.


Design Layout & Source Code

Untuk design Layoutnya cukup sederhana, contohnya seperti gambar berikut ini :

Jika kita masuk ke Mode XML, maka akan terlihat seperti berikut ini :

<?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:gravity="center"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context="developer.net.cianjur.simple_app.kotlin_example">

    <EditText
        android:id="@+id/input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Masukan Sesuatu"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Submit" />

</LinearLayout>

Source Code untuk program tersebut seperti berikut ini :

package developer.net.cianjur.simple_app

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_kotlin_example.*

class kotlin_example : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kotlin_example)
        submit.setOnClickListener {
            var data = input.text.toString()
            Toast.makeText(applicationContext, data, Toast.LENGTH_LONG).show()
        }
    }
}

Penjelasan :
  • Coba kalian perhatikan, pada pemrograman kotlin kita tidak perlu menggunakan findViewById(), kita bisa langsung memanggi nama id dari komponen tersebut, seperti button, pada button tersebut sudah terpasang id bernama submit, jadi kita langsung saja panggil id tersebut.
  • import kotlinx.android.synthetic.main.activity_kotlin_example.* fungsinya supaya kita bisa memanggil id dari komponen tersebut secara langsung.
  • Disana terdapat satu variable bernama data, variable tersebut mendapatkan value/nilai berupa string dari komponen berId input (EditText).
  • Sebagai Output kita menggunakan Toast, dan menampilkannya dialog/pesan tersebut yang sudah kita inputkan, saat tombol submit ditekan.
  • Pada pemrograman kotlin, fungsi extends digantikan dengan simbol (:).

Baca Juga :
Coba kalian jalankan project tersebut menggunakan emulator atau langsung pada smartphone android kalian, maka hasilnya akan seperti ini :


Itu dia tutorial mengenai pembuatan aplikasi android menggunakan pemrograman kotlin, mohon maaf jika ada kesalahan kata, jika ada yang ingin kalian tanyakan silakan isi komentar dibawah dan jangan lupa untuk share serta follow blog WILDAN TECHNO ART untuk mendapatkan update terbaru. Wassalamualaikum Warahmatullahi Wabarakatuh.

Tutorial Flashing Firmware Huawei Y336-U02 Tested

Tutorial Flashing Firmware Huawei Y336-U02 Tested

Assalamualaikum Warahmatullahi Wabarakatuh. Pada tutorial berikut ini, saya akan menjelaskan bagaimana cara memperbaiki Huawei Y336-U02 yang bootlop atau terdapat virus yang mengakibatkan system/software pada perangkat tersebut menjadi rusak.


Agar ponsel kalian kembali seperti semula lagi, kita perlu memperbaikinya dengan cara memflashing/install ulang perangkat tersebut menggunakan tool yang bernama UpgradeDownload, selain itu juga kita perlu beberapa bahan lainnya seperti Firmware dan Driver.

Tutorial ini bisa kalian pelajari dan mempraktekannya dirumah, jadi tidak perlu ke tempat service. harap diingat, setelah proses flashing selesai, semua data yang terdapat pada memori internal kalian akan terhapus.

Bahan-bahan yang diperlukan

Langkah-langkah Flashing

1) Pertama extract semua bahan yang sudah kailan download menggunakan winrar atau sejenisnya.
2) Install Driver terlebih dahulu pada laptop/komputer kalian, sebelum memulai flashing.
Step1-Installasi-Driver-Huawei-Y336-U02
amd64 (Untuk Windows 64 bit) dan x86 (Untuk Windows 32 bit)

3) Karena saya menggunakan windows 64 bit, jadi saya memilih folder amd64, setelah itu klik file dpinst, seperti dibawah ini :
Step2-Installasi-Driver-Huawei-Y336-U02
Klik File dpinst, Untuk Memulai Installasi Driver

4) Setelah Installasi Driver selesai, kemudian buka aplikasi UpgradeDownload, lalu jalankan aplikasi tersebut.
Step1-Installasi-Firmware-Huawei-Y336-U02
Jalankan Aplikasi UpgradeDownload

5) Setelah terbuka, klik Icon Gear.

Baca Juga :
Step2-Installasi-Firmware-Huawei-Y336-U02
Klik Icon Gear untuk memilih file Firmware yang sudah kalian download

6) Pilih file Firmware Huawei Y336-U02 yang sudah kalian download tadi, setelah itu klik open.
Step3-Installasi-Firmware-Huawei-Y336-U02
Memilih File Firmware Huawei Y336-U02

7) Klik tombol play, setelah itu, hubungkan ponsel Huawei kalian pada komputer/laptop sambil menekan volume (+), lalu tunggu hingga proses flashing selesai.
Step4-Installasi-Firmware-Huawei-Y336-U02
Prosses Flashing Firmware Huawei Y336-U02

8) Cabut kabel USB pada ponsel kalian lalu nyalakan kembali ponsel tersebut. Selesai, kini Huawei Y336-U02 kalian kembali seperti baru lagi.

Semoga tutorial yang saya berikan ini bisa bermanfaat untuk kalian serta bisa mempraktekannya dirumah, jika ada yang ingin kalian tanyakan mengenai postingan ini, silakan ini kolom komentar dibawah dan jangan lupa untuk share serta follow blog WILDAN TECHNO ART. Wassalamualaikum Warahmatullahi Wabarakatuh.