Genel olarak acemi ve yeni başlayan arkadaşların genellikle kullandığı webview ile web sitelerimizi ve diğer web sayfalarınızı görüntüleyebilirsiniz. Yani hibrit bir kullanım sağlayabilirsiniz.

Aslında webview yapımı genellikle aşırı derecede basittir fakat genellikle bir kaç hata yapılmaktadır. Şimdi sırasıyla adımlarımızı uygulayarak webview uygulamamızı yapalım. İsterseniz daha önce anlattığım bildirim gönderme konusu olan OneSignal ile Android Bildirim Göndermeile de uygulamanıza bildirim sistemi ekleyebilirsiniz.

ADIM 1

Aattk webview uygulama

Birinci kısım uygulama ismi ikinci kısım ise paket ismi Google Play Store’a yüklerken başka bir uygulama ile aynı olmaması gerekiyor. (Dikkat)

ADIM 2

Webview uygulama android

Uygulamınızın hangi Android sürümünden sonrasını desteklemesini istiyorsanız onu seçiniz.Alt kısımda dünyadaki telefonların ne kadarını desteklediğini gösteriyor.

ADIM 3

Webview Uygulama

Boş activity’i seçiyoruz ve devam ediyoruz.

ADIM 4

WEbview Uygulama

Gerekli isimleri verebilirsiniz ama kodlarda bunların isimlerini değiştirmeyi unutmayınız.

ADIM 5

Webview Uygulama

XML dosyaları bizim genel olarak apk dosyamızın şekillerini belirttigimiz dosyadır. Yani görsel şablon olarak ifade edebiliriz.Bazı XML dosyaları ise başka degerler bildirebilir. Şimdi ise bir tane webview’e ihtiyacımız var bu yüzden sağ kısımdan bir webview ekliyoruz daha sonra alt kısımdan TEXT kısmına tıklayıp daha sonra ise webview’i adlandırıyoruz.

android:id="@+id/webview"

Layout example

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="aattk.net.myapplication.anasayfa">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp" />
</android.support.constraint.ConstraintLayout>

ADIM 6

webview uygulama

JAVA kodları genel olarak programın çalışmasını sağlayan ve mantığını oluşturan kısımdır. Kod örneğine aşşağı kısımdan erişebilirsiniz.Lütfen ama paket isimlerine dikkat ediniz.Yerlerine bakarak parça parça kopyalayınız.

package aattk.net.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class anasayfa extends AppCompatActivity {
    private WebView webView;
    private CustomWebViewClient webViewClient;
    private String Url = "http://www.aattk.net";
    ProgressDialog mProgressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.anasayfa);
        mProgressDialog = new ProgressDialog(this);//ProgressDialog objesi oluşturuyoruz
        mProgressDialog.setMessage("Yükleniyor...");//ProgressDialog Yükleniyor yazısı

        webViewClient = new CustomWebViewClient();//CustomWebViewClient classdan webViewClient objesi oluşturuyoruz

        webView = (WebView) findViewById(R.id.webview);//webview mızı xml anasayfa.xml deki webview bağlıyoruz
        webView.getSettings().setBuiltInZoomControls(true); //zoom yapılmasına izin verir
        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(webViewClient); //oluşturduğumuz webViewClient objesini webViewımıza set ediyoruz
        webView.loadUrl(Url);


    }

    private class CustomWebViewClient extends WebViewClient {
        //Alttaki methodların hepsini kullanmak zorunda deilsiniz
        //Hangisi işinize yarıyorsa onu kullanabilirsiniz.
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) { //Sayfa yüklenirken çalışır
            super.onPageStarted(view, url, favicon);

            if(!mProgressDialog.isShowing())//mProgressDialog açık mı kontrol ediliyor
            {
                mProgressDialog.show();//mProgressDialog açık değilse açılıyor yani gösteriliyor ve yükleniyor yazısı çıkıyor
            }

        }

        @Override
        public void onPageFinished(WebView view, String url) {//sayfamız yüklendiğinde çalışıyor.
            super.onPageFinished(view, url);

            if(mProgressDialog.isShowing()){//mProgressDialog açık mı kontrol
                mProgressDialog.dismiss();//mProgressDialog açıksa kapatılıyor
            }
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // Bu method açılan sayfa içinden başka linklere tıklandığında açılmasına yarıyor.
            //Bu methodu override etmez yada edip içini boş bırakırsanız ilk url den açılan sayfa dışında başka sayfaya geçiş yapamaz

            view.loadUrl(url);//yeni tıklanan url i açıyor
            return true;
        }

        @Override
        public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {
            //BU method webview yüklenirken herhangi bir hatayla karşilaşilırsa hata kodu dönüyor.
            //Dönen hata koduna göre kullanıcıyı bilgilendirebilir yada gerekli işlemleri yapabilirsiniz
            //errorCode ile hatayı alabilirsiniz
            //	if(errorCode==-8){
            //		Timeout
            //	} şeklinde kullanabilirsiniz

            //Hata Kodları aşağıdadır...

	    	/*
	    	 *  /** Generic error
		    public static final int ERROR_UNKNOWN = -1;

		    /** Server or proxy hostname lookup failed
		    public static final int ERROR_HOST_LOOKUP = -2;

		    /** Unsupported authentication scheme (not basic or digest)
		    public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3;

		    /** User authentication failed on server
		    public static final int ERROR_AUTHENTICATION = -4;

		    /** User authentication failed on proxy
		    public static final int ERROR_PROXY_AUTHENTICATION = -5;

		    /** Failed to connect to the server
		    public static final int ERROR_CONNECT = -6;

		    /** Failed to read or write to the server
		    public static final int ERROR_IO = -7;

		    /** Connection timed out
		    public static final int ERROR_TIMEOUT = -8;

		    /** Too many redirects
		    public static final int ERROR_REDIRECT_LOOP = -9;

		    /** Unsupported URI scheme
		    public static final int ERROR_UNSUPPORTED_SCHEME = -10;

		    /** Failed to perform SSL handshake
		    public static final int ERROR_FAILED_SSL_HANDSHAKE = -11;

		    /** Malformed URL
		    public static final int ERROR_BAD_URL = -12;

		    /** Generic file error
		    public static final int ERROR_FILE = -13;

		    /** File not found
		    public static final int ERROR_FILE_NOT_FOUND = -14;

		    /** Too many requests during this load
		    public static final int ERROR_TOO_MANY_REQUESTS = -15;
	    	*/

        }
    }
    public void onBackPressed() //Android Back Buttonunu Handle ettik. Back butonu bir önceki sayfaya geri dönecek
    {
        if(webView.canGoBack()){//eğer varsa bir önceki sayfaya gidecek
            webView.goBack();
        }else{//Sayfa yoksa uygulamadan çıkacak
            super.onBackPressed();
        }
    }
}

ADIM 7

webview uygulama

ADIM 8

webview uygulama

Şimdi ise en önemli noktalardan bir tanesi olan internet izinini vermemiz gerekiyor .Eğer bu izini vermezsek uygulamamız Hata verir internete bağlanılamıyor diye.

<uses-permission android:name="android.permission.INTERNET" />

ADIM 9

Lütfen yukarı kısımdan çalıştır butonuna basınız ve deneyiniz.

Yorum yaparak beni teşvik edebilirsiniz