Android WebView Kullanımı

Merhaba arkadaşlar mobilhanem.com üzerinden anlattığımız/yayınladığımız derslere Android de WebView Kullanımı ile devam ediyoruz. Android de webview yapısı uygulama içinde istenilen adresteki web sitesini açmak için kullanılır. En yaygın kullanımı budur. Bunun dışında WebView üzerinde HTML geliştirme de yapılabilir. Aslında daha basit anlatmak gerekirse uygulama içi browser diyebiliriz.

mobilhanem webview

Biz bugün verilen linkteki yani kendi sitemiz olan mobilhanem.com u açmaya çalışacağız. Açmaya çalıştığımız site eğer responsive bir site ise çok güzel sonuçlar elde edebiliriz.Responsive değilse site otomatik olarak ekran boyutlarına küçülecektir. Zoom in ve zoom out kullanarak sitemizi büyüterek kullanabiliriz. Zaten bu bahsettiğim mobil browserlarda da aynı şekilde .

[wpdm_file id=16]

Arkadaşlar aslında internet ortamında webview konusunda çok fazla içerik var. Bizim bu dersi paylaşmamızın sebebi bu dersimizde oluşturduğumuz apk yi imzalayıp google playe yüklemeyi anlatacağız.Bundan sonraki dersimiz muhtemelenen Apk Yı Google Play e yüklemek olacaktır.

Arkadaşlar şimdi geçelim örnek uygulamamıza.Ben yine kod üzerinde gerekli açıklamaları yaptım.

Anasayfa.java

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 Activity {
 
	private WebView webView;
	private CustomWebViewClient webViewClient;
	private String Url = "http://www.mobilhanem.com";
	ProgressDialog mProgressDialog;
	
	public 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.webView1);//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();
	    }
	}
	
	
 
}

Bu dersimde anlatmak istediklerim bu kadar.Anlamadığınız yada eklemek istediğiniz yer olursa çekinmeden yorum bırakabilirsiniz.

Bir dahaki dersimde Google Play e apk yüklemeyi anlatacağım. O zamana kadar kendinize iyi bakın .

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

[wpdm_file id=16] 1

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

161 Yorum

  • hocam elinize sağlık, çok faydalı bir paylaşım… lakin şöyle bi sorun gözüme çarptı: uygulamayı yayınladım tel’e indirdim.. uygulama dan siteme giriş yaptım sorunsuz çalıştı ama misal telefon dikey vaziyetteyken diyelim sitede yer alan bir konuyu tıklayıp açtım ve konuyu daha rahat okumak için telefonu yatay vaziyete getirdim, işte bu durumda uygulama baştan yükleniyor benim açtığım konunun sayfası değil yeniden anasayfa karşıma geliyor, tam tersi içinde aynı durum geçerli(yatayken dikeye geçiş yapınca) .. bunu nasıl çözebiliriz?

    • Öncelikle yorumunuz için teşekkür ederim.
      Androidde ekran orieantation değiştiği zaman yani dikey pozisondan yatay pozisyona yada yatay pozisyondan dikey pozisyona geçtiği zaman OnCreate metodu tekrar çağırılır ve Activity tekrar yüklenir .Bunu engellemenin yolu Manifest.xml dosyasında oluşturduğumuz activity şu şekilde olmalı

      Yani şu kısım eklenmeli
      android:configChanges=”orientation|keyboardHidden”

      • teşekkürler hocam

        sanırım SDK sürümü yüzünden sorun çıktı yukardaki kod çalışmadı, google’dan baktım 13 sürümü üstü için android:configChanges=”orientation|screenSize”

        kodunu çalıştırdım, sorunsuz çalıştı

  • hocam bi sorum daha olacak müsadenle)
    şimdi uygulamayı açıyorum, bi konuya tıklıyorum konuya giriş yapıyorum .. geri dönme tuşuna bastığımda(telefonun geri dönme tuşu) anasayfaya ya da bir önceki sayfaya gitmek yerine doğrudan uygulamadan çıkış yapıyor … bi önceki sayfaya ya da anasayfaya gitmesini nasıl sağlarız?

  • Hocam Elinize Sağlık Eğitimleriniz Çok Güzel Ve Açıklayıcı Teşekkür Ederim.
    Size Bir Sorum Olacak. Mobil Siteyi Uygulamaya Dönüştürdüm. Fakat Uygulamada Textboxlar ın içine tıkladığımda yazı yazamıyorum

        • webView.requestFocus(View.FOCUS_DOWN);
          webview.setOnTouchListener(new View.OnTouchListener() {
          @Override
          public boolean onTouch(View v, MotionEvent event) {
          switch (event.getAction()) {
          case MotionEvent.ACTION_DOWN:
          case MotionEvent.ACTION_UP:
          if (!v.hasFocus()) {
          v.requestFocus();
          }
          break;
          }
          return false;
          }
          });

          Bu kodu bir dene bakalım. İşe yaraması lazım.

          • Teşekkür Ederim Hocam Çalıştı. Bir Ufak Sorun Daha Var Uygulamada Formlar Çalışmıyor. Örnek : Talep Formunda Eksik Veya Yanlış Bilgi Girildiğinde Uyarı Formunun Çıkması gerekiyor. Fakat Form Çıkmıyor.

          • bide bunu dene bakalım. Bundan başkada çözüm gözükmüyor.

            webView.setWebChromeClient(new WebChromeClient(){

            @Override
            public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
            //Required functionality here
            return super.onJsAlert(view, url, message, result);
            }
            });

          • Taha bey ben file dosyasından html çağırıyorum ve javascript ile alert uyarısı verdiriyorum fakat “file:// adresindeki sayfada şunlar belirtiliyor diyor ve altında benim uyarımı yazdırıyor. Ben bu “file:// adresindeki sayfada şunlar belirtiliyor” nasıl kaldırabilirim sadece benim uyarım çıksın istiyorum. Şimdiden teşekkürler..

          • Bunu kaldırma şansın yok.Bu android ile ilgili değil bu javascriptin kendi yapısı. Kaldırmana yada düzenlemene izin vermiyor.Normal bir websitesi olsa
            Örn: “www.mobilhanem.com sitesi diyorki : ”
            diyecek veya localda olsa
            “localhost diyorki :”
            şeklinde diyecek. Sende filepath altında olduğu için o şekil mesaj veriyor. Bunu kaldırmak istiyorsan custom alert yapılarını kullanacaksın.Jquery ile hazırlanmıs Custom Alert mesajlarda bu şekilde bir başlık bulunmuyor.

          • bu kod nereye eklenecek eklemeye çalıştığımda View lerin altını çiziyor MotionEvent ininde altını çiziyor MotionEvent üstüne gelince importunu ekleyince tamamen hata veriyor 🙂 inş anlatabilmişimdir

          • 
            
             webView = (WebView) findViewById(R.id.webView1);//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);
            
            

            buranın altına ekleyebilirsin.

          • tşk ederim usta tablete attım gayet başarılı çalışıyor

  • Hocam Merhabalar Sizin Yukarıda yazdığınız kodları ekliyoruz ve güzel bir şekilde çalışıyor. Teşekkür ederiz. Webview ile yönlendirilen site internet olduğu zaman çalışıyor. İnternet kontrolünü yapan kodları da yazmanız mümkünmüdür acaba. Yani Uygulama Açılırken İnternet Var mı Yokmu Kontrol Etsin İnternet Yoksa “Lütfen İnternet Bağlantınızı Kontrol Ediniz” Uyarısı Çıksın Şimdiden tşk. ederim.

    • 
      public boolean isOnline() {
          ConnectivityManager cm =
              (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo netInfo = cm.getActiveNetworkInfo();
          if (netInfo != null && netInfo.isConnectedOrConnecting()) {
              return true;
          }
          return false;
      }
      
      bu methodu ekliceksiniz.
      
      webView.loadUrl(Url); direk çağırmıcaksın.Bunun yerine 
      
      if(isOnline()){ //internet varsa yükle
          
            webView.loadUrl(Url);
      
      }else{//yoksa
           Alert internet yok mesajı
      }
      
      
      • Hocam Kodları eklediğimde internet olmadığında sayfa görüntülenemiyor uyarısı yok. Yapmak istediğimizin birinci aşaması buydu. Fakat Uyarı vermiyor İnternet Yokken Uygulama çalıştırıldığında sadece beyaz bir ekran geliyor ve öylece kalıyor.

        • Tamam işte orda Alert kullanacaksın .

          
          
          AlertDialog alertDialog = new AlertDialog.Builder(this).create();
          
          alertDialog.setTitle("Hata...");
          
          alertDialog.setMessage("İneternet Bağlı değil!");
          
          alertDialog.setButton("Tamam", new DialogInterface.OnClickListener() {
          
          public void onClick(DialogInterface dialog, int which) {
          
          }
          
          });
          
          alertDialog.setIcon(R.drawable.icon);
          
          alertDialog.show();
          
          
          • Hocam Hiçbir Hata veya sıkıntı görünmüyor fakat yukarıdaki kodları eklediğimde de Beyaz Bir Ekran geliyor onun dışında hiçbir uyarı yok

          • Pardon AndroidManifestte izin vermek de gerekiyor interneti test etme için onu unutmusum.

            bunuda manifeste eklemeniz gerekiyor.

          • Tamam Hocam Ekledim Şimdi Uyarı Kısmı Çalışmaya Başladı. Fakat İnternet Olsada Olmasada İnternet Bağlantısı Yok Uyarısı Veriyor.

          • if(isOnline()){
            webView.loadUrl(Url);
            }else{
            AlertDialog alertDialog = new AlertDialog.Builder(this).create();

            alertDialog.setTitle(“Hata…”);

            alertDialog.setMessage(“İneternet Bağlı değil!”);

            alertDialog.setButton(“Tamam”, new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {

            }

            });

            alertDialog.setIcon(R.drawable.icon);

            alertDialog.show();
            }

            böyle yapıyorum AlertDialog altını çiziyor import android.app.AlertDialog; unu ekliyorum bu seferde
            new AlertDialog.Builder(this)

            burayı tamamen çizyor ayrıca setButton dan sonrasınıda çiziyor nasıl yapmalıyım bunun derlenmiş halini tekrar yayınlarmısınız kod olarak yeni başladım web sitemi yayınlamak istiyorum şimdiden tşk ederim

          • 
            
            AlertDialog.Builder builder = new AlertDialog.Builder(Anasayfa.this);
            
                            builder.setCancelable(true);
            
                            builder.setTitle("Hata");
            
            builder.setMessage("İneternet Bağlı değil!");
            
                            builder.setInverseBackgroundForced(true);
            
                            builder.setPositiveButton("Tamam",
            
                                    new DialogInterface.OnClickListener() {
            
                                        @Override
            
                                        public void onClick(DialogInterface dialog,
            
                                                int which) {
            
                                            dialog.dismiss();
            
                                        }
            
                                    });
            
                             
            
                            AlertDialog alert = builder.create();
            
                            alert.show();
            
            

            Bu sorunsuz çalışacaktır.

  • Hocam webviewde uygulamayı tamamladıktan sonra sayfa yenileme işlemini nasıl yapabiliriz. Mesela twitterda ekranı aşağı doğru kaydırınca sayfa yenileniyor. webview ile yapılan uygulamada böyle bir yenileme işlemi yapabilirmiyiz.

    • ActionBar kullanabilirsin.Action Bar ‘a refresh butonu eklersin dediğin işlemi yapabilirsin.
      webView.loadUrl( “javascript:window.location.reload( true )” ); bu kod sayfayı bastan yüklemeye yarar.

  • Hocam Merhabalar;
    uygulama içerisinde açılan sitede bulunan pdf vb. uzantıdaki dosyaları indirmek istenirken veya açmaya çalışılırken NOT FOUND hatası vermektedir. Normal Siteden açıldığında download da problem yoktur. Dosyayı nasıl download edebiliriz. Şimdiden Teşekkürler.

    • Merhaba,Webview içinde normal siteden download eder gibi dosya download edemezsiniz. Bunun için farklı yol kullanmanız gereklidir.

      
      
      webView.setDownloadListener(new DownloadListener() {
              public void onDownloadStart(String url, String userAgent,
                      String contentDisposition, String mimetype,
                      long contentLength) {
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);
              }
          });
      
      

      bu kodu kullanarak dosyayı direk açtırabilşirsin.

  • Hocam iyi çalışmalar;
    Benim şöyle bi sorum olacaktı.Acaba biz String URL’yi kodlarımız içine değilde bir text içine yazıp kullanıcının istediği bir url’den indirmeyi nasıl yapabiliriz ?

  • Hocam Merhabalar,
    WebView üzerinde local sitemi açtığımda resimler görünmemektedir. Eclipse CatLog üzerinde resim dosyaları tektek kırmızı renklerle sıralanmaktadır. Html dosyam res/raw klasörünün içinde, resimler ise items klasöründe bulunmaktadır. Nasıl çözebilirim?

  • selamunaleyküm…bilgi paylaşımıznızdan dolayı çok teşekkür ederim.Ben bu kodları kendi projeme uyguluyorum ama malesef web sitem görüntülenmiyor.eğer vakit ayırıp en başından adım adım nasıl yapılacağını resim yada video destekli anlatabilirseniz çok memnun olurum.ALLAH razı olsun

    • Aleykümselam. Bu kodda senin yapman gereken tek şey URL’i değiştirmek başka bir şey yapmana gerek yok.Resim ve videolu anlatım yapmıyoruz. Bu şekilde calışan kodlar paylaşıyoruz kusura bakma.

  • Merhabalar güzen anlatımlarınız için teşekkür ederim. Ben webview ile ilgili bir sıkıntı ile karşılaşıyorum. Bir sosyal paylaşım sitesi projem var ben websitemi responsive uyumlu olarak yaptım. Herşey webview de çok güzel fakat giriş yapmak istediğim zaman beni normal tarayıcıya yönlendiriyor ve oradan giriş yapabiliyorum. Bunun önüne geçilemezmi. Yani giriş yap butonuna tıkladığımda normal bir şekilde giriş yapamıyormuyuz ?

    • Bu methodu kullanmıyor musun?

      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;
      }

      • Verdiğiniz bilgi için teşekkür ederim. İşime yaradı fakat çok fazla kullanışlı olmadığını gördüm. Bu yüzden android için websitemi tekrar yazmak istiyorum. Bu konuda size sorular sorabilirmiyim bilmiyorum. Tek başıma çalıştığım için biraz zorlanabilirim gibi geliyo.

          • Aslına bakarsanız evet. Birçok site ve video izledim ancak hep birşeyler eksik anlatılıyo yada ben anlamıyorum :/ . Bu konuda bilgi sıkıntısı çektiğimi söyleyebilirim. Ben tema’yı hazırladım giriş sayfası ListView vs. ancak görsellerin hiçbiri database ile bağlantılı değil. Bağlantıyı kurarak ekrana veri yazdırmayı öğrenmek istiyorum.

          • Bunun için (veritabanından bilgi çekip uygulama içinde kullanmak için) bizim bir sürü dersimiz var. Tüm derslerimize göz gezdirirsen çok işine yarıyacaktır. Takıldığın yerde zaten soru sorabilirsin.

          • Yanıtınız için teşekkür ederim. Birşey sormak istiyorum android webview uygulamalarında biz sayfamızın içerisindeki JQuery kodlarını Bu şekilde çağırıyoruz: webView.getSettings().setJavaScriptEnabled(true); fakat benim yazdığım Jquery kodları WebView içerisinde çalışmıyor sorun ne olabilir acaba ?

          • Webview’de dışardaki bir linki’mi açmaya çalışıyorsun yoksa asset klasörü içinden mi çağırıyorsun?

          • Asset klasörü ?

            Ben şu şekilde bir kod düzeni oluşturdum.

            package test.test;

            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 MainActivity extends Activity {

            private WebView webView;
            private CustomWebViewClient webViewClient;
            private String Url = “http://www.test.com/”;
            ProgressDialog mProgressDialog;

            public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setMessage(“Loading…”);

            webViewClient = new CustomWebViewClient();

            webView = (WebView) findViewById(R.id.webView);
            webView.getSettings().setBuiltInZoomControls(false);
            webView.getSettings().setSupportZoom(false);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
            webView.getSettings().setAllowFileAccess(true);
            webView.getSettings().setDomStorageEnabled(true);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebViewClient(webViewClient);
            webView.loadUrl(Url);

            }

            private class CustomWebViewClient extends WebViewClient {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);

            if(!mProgressDialog.isShowing())
            {
            mProgressDialog.show();
            }

            }

            @Override
            public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            if(mProgressDialog.isShowing()){
            mProgressDialog.dismiss();
            }
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

            view.loadUrl(url);
            return true;
            }

            @Override
            public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {

            }
            }
            public void onBackPressed()
            {
            if(webView.canGoBack()){
            webView.goBack();
            }else{
            super.onBackPressed();
            }
            }

  • Hocam ben daha çok acemiyim bu konuda hiç deneyimim yok webview yöntemiyle bi uygulama yapmak istiyorumda çözemedim sitenin teması mobil uyumlu sadece uygulama yapmam lazım yardımcı olurmusunuz. Site www. takiliyog. com yardımcı olursanız sevinirim e posta adresim [email protected]

  • Merhaba,
    Ben mevcut bir uygulama yaptım ve icinde bircok webview ozelligi kullandim ancak sorunum pdf icerikli bir dosya olan sayfada pdf dosaysini tiklayinca indirememek. Bunun bir yolu var mi? Aslinda tam olarak istedigim hem pdf dosyalarini yada word excel gibi dosyalari indirme ozelligini webview e entegre etmek ayrica pdf dosyasini mevcut bir eclipse android projesinde ayni imageview gibi bir arac ile goruntulemek mumkun mu? Yardimci olursaniz sevinirim.

  • Projeyi bir türlü indiremiyorum,import dediğimde eclipsede ” eclipse import invalid project description ” şeklide hata veriyor acaba nasıl bu projeyi kullanabilirim çok teşekkür ederim

  • Taha hocam bu dosyaları Android Studio’da düzenleyebilir miyiz. İmport ettim düzenlemeleri de yaptım, ancak derleme işlemini yapamıyorum. onu nasıl yapacağız. Run yaptığımda da “Error running Anasayfa: No Android facet found for WebViewKullanimi” böyle hata veriyor.

  • Hocam Ben kendim yaptığım html sayfasının webview de göstermek istiyorum bilgisayar yolunu veriyorum gelmiyor. Yardımcı olursanız sevinirim.

  • ben php dosyasında upload işlemleri yaptırıyorum normal mobil tarayıcıda rahatça yaptırabiliyorum ama uygulamanın webviewinde olmuyor java kodlarını çalıştır demişsin ( webView.getSettings().setJavaScriptEnabled(true);) onda sıkıntı yok telefonun kendi yöntem seç penceresini açtıramıyorum

    • 
      
      webView.setWebChromeClient(new WebChromeClient()  
          {  
                 //The undocumented magic method override  
                 //Eclipse will swear at you if you try to put @Override here  
              // For Android 3.0+
              public void openFileChooser(ValueCallback uploadMsg) {  
      
                  mUploadMessage = uploadMsg;  
                  Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
                  i.addCategory(Intent.CATEGORY_OPENABLE);  
                  i.setType("image/*");  
                  MyWb.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);  
      
                 }
      
              // For Android 3.0+
                 public void openFileChooser( ValueCallback uploadMsg, String acceptType ) {
                 mUploadMessage = uploadMsg;
                 Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                 i.addCategory(Intent.CATEGORY_OPENABLE);
                 i.setType("*/*");
                 MyWb.this.startActivityForResult(
                 Intent.createChooser(i, "File Browser"),
                 FILECHOOSER_RESULTCODE);
                 }
      
              //For Android 4.1
                 public void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture){
                     mUploadMessage = uploadMsg;  
                     Intent i = new Intent(Intent.ACTION_GET_CONTENT);  
                     i.addCategory(Intent.CATEGORY_OPENABLE);  
                     i.setType("image/*");  
                     MyWb.this.startActivityForResult( Intent.createChooser( i, "File Chooser" ), MyWb.FILECHOOSER_RESULTCODE );
      
                 }
      
          });  
      
      

      Bu yukardaki kodları internette araştırıp buldum kendim denemedim. Denedikten sonra olumlu sonuç alıp bildirebilirsen ipucu olarak yayınlayalım.

  • Hocam merhaba,
    verdiğiniz kodlara uygun webview gerçekleştirdim. Tek sıkıntım webviewde indirme yapmaması download manager konunuzuda okudum fakat bir çıkarım yapamadım yardımcı olur musunuz ?

  • Hocam s.a.
    çok teşekkür ederim action bar ile web view konularını birleştirerek güzel bir uygulama yaptım. Fakat yenile butonu ile web wiew sayfasını nasıl yenileteceğiz. Biraz yeniyim bu konularda ama çözebilirim yardımcı olursanız. Sizin actionbar uygulamanızda yenile butonuna basınca buton görünümü yeniliyor gibi gösteriyor fakat webview de bi değişiklik olmuyor.

      • evet hocam. hatta üstüne push natification dersini de birleştirdim. şuan admob banner ve geçişli reklam derslerindeki kodları ve download maneger dersindeki kodları entegre etmeye çalışıyorum. o konularla ilgili de yorumlarım vardı. Tek sıkıntım Google analytics ekleyemedim. çok uğraştım ama olmuyor. bununla ilgili de bir konu yayınlayabilecek misin?

        • pekde yeni değilmişsin:) Download manager sorusunu gördüm ama o dersi o kadar önce hazırladım ki şuan ben bile hatırlayamadım. Analytics konusuna gelince onu bende denedim fakat bende başarılı sonuç alamadım fazlada uğraşmadım. Analytics gibi çalışan AppSee diye bir site var hemde kullanıcının yaptıklarını video olarak veriyor çok başarılı incelemeni tavsiye ederim.
          Bu aralar pek ders yayınlamayı düşünmüyorum hem işlerim yoğun hemde insanlar dersleri çalıştırmayı başaramayınca bizi suçluyor biraz hevesim kırıldı.

          • yok hocam gerçekten ilk defa yapıyorum. yani birazcık programlamadan anladığımızdan bazı algoritmaları kurarak çözdüm sayılır. hem sende gayet başarılı ve ince ayrıntısına kadar anlatmışsın hocam. eline emeğine sağlık.

            appSee tavsiyeni değerlendireceğim. teşekkürler bu konuda.

            Ders yayınlama konusunda beceremeyenlerin lafları yuzunden bence bırakmamalısın. bence bu işe yeni başlayanların ve ilgilenenlerin senin gibilere ihtiyacı var hocam.

            sana admob reklamları için bir sorum olacak. ben iki yerde çalışıyorum android studio ile. genymotion cihazını iki ayrı yerde kullanıyorum. admob için iki ayrı testID nasıl ekleyeceğim. kaynak kodunda sadece 1 adet testID giriliyor. ikinci test ID yi nasıl ekleyeceğim. virgül ile ilk ID nin yanına mı yoksa aynı kodları kopyalayıp ikinci kodu mu değiştireceğim..

          • YORUM İÇİN TEŞEKKÜR EDERİM.

            adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .addTestDevice(“C997A99311004C86029CF82C7402F675”)
            .addTestDevice(“C997A9931100SAJDASDASD734543”)
            .addTestDevice(“C997A9931100SAJDASDASD734543SDASD”)
            .build();

            Bu şekilde dener misin?

    • Selamın aleyküm kardeşim. Bu download meselasini çözemedim bi türlü. bunun için webviewde her her bir butona tıklandığında url nin uzantısını kontrol ettirsek. uzantı .apk veya .rar ise cihazın varsayılan tarayıcısına yönlendirecek. bu uzantılardan biri değil ise uygulamanın içerisinde açacak. bunu yapamaz mıyız acaba.. gerçekten çok lazım. kaç güncür uğraşıyorum download menegeri halledemedim. Yardımcı olursan çok sevinirim kardeşim.

  • Hocam hiç bir değişiklik yapmadan direkt dosyaları açıyorum fakat yine böyle bir hata alıyorum. Nasıl çözebilirim ?

  • webview içerisinde ornek.com/example.pdf gibi pdf uzantılı bir dosyanın içeriğini nasıl gösterebilirim

  • Merhaba,

    WebView kullanarak bir çalışma yaptım fakat bir yerde takılıp kaldım.
    Webview içinde açtığım sitede telefon numaraları var normal mobil cihazlardan girildiğinde numarayı tıklayınca arama yapıyor fakat webview ile yaptığımda arama yapamıyorum bir çok sitede bulunan örnek kodları denedim çözüm olmadı sizce neyi gözden kaçırıyorum ben bana bir çıkış yolu önerebilir misiniz?

    İyi çalışmalar.

      • Merhaba,

        Sorunu çözdüm fakat sorun ne kaynaklı onu anlamadım 😀

        Çözümü şu şekilde yaptım;

        Projeyi silip baştan başladım ve bu sefer sona bıraktığım arama özelliğini ilk olarak test ettim bir iki test sonunda çalışınca yavaş yavaş diğer kısımları yazarak hallettim.

        Teşekkürler…

  • Taha Hocam Merhaba

    Webview İle hazırladığımız uygulamaya her sayfada internet kontrolü yapmak istiyoruz. size bunu sormuştum daha önce sizde shouldOverrideUrlLoading altına internet kontrol kodunu eklememi söylemiştiniz. ekliyorum fakat yanlış çalışıyor. webview ile çektiğim sitedeki hangi linke tıklarsam tıklayayım hep anasayfa açılıyor. tıkladığım her linkte internet bağlantı kontrolü yaparak linke gitme işlemi için yardımcı olabilirmisiniz. teşekkürler

  • Merhaba ben webwiev sorunsuz sekilde sitemi ekledim fakat menu eklemek istiyorum menude. Hakkinda. Facebook sayfasi gibi bu nasil olabilir sitede menu ornegi var fakat iki dersi birlestiremedim tesekkur ederim

  • Merhaba Hocam Webview İle Hazırladığımız E-Ticaret Sistemi var Android Uygulamaya Gönüştürüp Telefona Kurduğumuzda Herşey Normal Çalışıyor 1 Sorun Dışında;

    1- Ödeme Formunu Doldururken Formu Doldurmamız İçin Klavye Çok Geç Geliyor ve Zaman Zaman Formu Doldururken Uygulamadan Atıyor.

    Bu Sorunla Mobil Sitede Karşılaşmıyoruz.

  • merhaba…hocam ben internet açık olmadığında ekranda url uzantısının görünmesini nasıl engelleyebilirim.birde internet açık değilse internetinizi açmak istermisiniz şeklinde bir butonun çıkıp internet ayarlarına gitmesini nasıl sağlayabilirim teşekkür ederim.

  • S.A. Hocam Kolay Gelsin.

    Webview de multi file upload işlemini nasıl kullanabiliriz?
    Uygulama toplu seçiyor fakat tamama tıklayınca dosya seçilmedi diyor. Ama tek seçince seçiyor dosyayı.

  • Merhaba, mevcut kodlarınıza örneğin internet yoksa yada ilgili site açılmazsa örn. site açılmıyor şeklinde bir hata verdirmek için nasıl bir kod eklemeliyiz? Bİlgi verirseniz sevinirim.

  • merhaba bir web projesi yaptım (php) bunu android telefonumda da çalıştırmak istiyorum.Hangi yolları izlemem gerek?

  • Hocam merhaba.Ekranı yatay konuma getirince uygulama yeniden başlatmış gibi ana sayfaya dönüyor bunu nasıl engelleyebilirim ?

  • Merhaba web wiew olarak uygulama yaptım yayınlandı fakat sitedeki pdf linkleri açılmıyor nasıl çözebilirim.

  • Webviewin üstüne text yazdırmak istiyorum ama hep webview in altına kaçıyor ve rogramı çalışınca görünmüyor textview,bunu nasıl çözebilirim?

    • Bunu FrameLayout kullanarak çözebilirsin. İnternetten framelayout kullanımını araştırabilirsin.
      Örn:

      Yukarıdaki gibi bişeyler deneyebilirsin.

  • merhaba .
    benim problemim şu.
    uygulamamın içinde bir WebView var ve normalde gayet iyi çalışıyor. Sıradan websitelerini açabiliyor. Fakat
    https://paperplanes.world/
    https://www.progressivewebf
    gibi adresleri yükleyemiyor.
    Kesinlikle bir yerlerde kodlama eksiği yapıyorum fakat bulamadım. Bu şekilde ki siteleri WebView üzerinde açmak için kodlama kısmında neler eklemeliyim.

    NOT: Bunun mümkün olduğunu biliyorum çünkü http://www.appsgeyser.com üzerinden website görüntülemesi yapan bir uygulama yaptığımda bu websiteleri sorunsuz olarak çalışıyor. Yani sorun benim kodlama eksiğimden kaynaklanıyor. addJavascriptInterface kullanmam mı gerekiyor acaba
    şimdiden teşekkür ederim

  • Merhaba ben Webview kullanarak bi uygulama yaptım fakat bu webview ın içerisindeki pdf dosyalarını açmıyor. Örnek olarak öğrenci bilgi sistemini açıyorum fakat orda transkripte girdiğim zaman pdf olduğu için açılmıyor yardımcı olur musunuz?

  • Merhaba, Taha Hocam Derslerinizi ilgiyle takip ediyorum. Yalnız bir problemim var. WebView ile sitemi yayınladım, google playstore de şuan yayınlanıyor. Ancak bugün farkettiğim konu şu bu webview üzerinden resim yükleyemiyorum. Chromeden sitemi açtığımda yine mobil görünümü geliyor ve resim yükle tuşuna basıp resim yükleme seçeneklerine ulaşabiliyorum ( Dosyadan Seç, Kamera vs.. ) ama WebView de bu tuş hiç basılmıyor sanki orada silik bir yazı varmış gibi görünüyor. Bu durumu nasıl düzeltebilirim.

    Uygulamada javayı aktif etme kodu ( tarayici.getSettings().setJavaScriptEnabled(true); ) yazdığımda hata vermişti bende

    @SuppressLint(“SetJavaScriptEnabled”)
    public class MainActivity extends Activity {

    hatayı public class üstüne bu kodu yazarak gidermiştim. Java kodu olmadan siteye giriş dahi yapmıyordu şimdi yapıyor ancak bu dosya yükleme tuşu canımı sıkıyor, bir çok kişide aynı hatadan yakınıyor.

    Manifest doyasında verdiğim izinler bu şekilde:

    Yardımlarınızı bekliyorum, İyi çalışmalar dilerim.

  • Merhaba Taha Hocam, bende giresunluyum hemşeri sayılırız. 4-5 saat önce bir sorundan bahsetmiştim bunu yorum olarak yazmıştım. Şimdi bakıyorum yorumum silinmiş. Açıkcası biraz kırıldım.

  • Merhaba,

    Webviewde malum siteyi çalıştırıyoruz ancak uygulamalarda adsense kullanmak yasak. Web sitesinde olan adsense’lerin uygulamada görünmemesi sağlanabilir mi?

  • Hocam şimdi biz bu kodu nasıl yapacağız yani onu anlamadım, biraz daha detaylı anlatman mümkün mü?, bu kodu hangi program ile açacağız vs.

  • Öncelikle herkese kolay gelsin, web tabanlı bir yazılımım. bu yazılımda kullanıcılar kullanıcı adı ve şifresini giriş yaparak sisteme erişebiliyor. firma bunu android uyguma olarak istiyor. direk webview içinde kullanmam yeterli. fakat google play bu tarz uygulamayı yayınlamayı kabul eder mi ? Daha sonra aynısını ios içinde yapıcam. apple store hakkında da bilginiz varsa paylaşırsanız sevinirim. iyi günler

  • Hocam anlatımın için çok teşekkürler, çok faydalı bir anlatım olmuş. Ancak benim karşılaştığım bir sorun var. Android studio yu kurdum. Virtual device oluşturup emulate etmeye çalışıyorum ancak sürekli olarak aşağıdaki hatayı alıyorum.
    ——————————————————-
    Executing tasks: [:app:assembleDebug]
    Gradle build finished in 21s 942ms
    Emulator: Process finished with exit code -1073741819 (0xC0000005)
    ——————————————————-
    Android studio yu güncelledim, sdk ve api kütüphaneleri güncelledim, virtual device in RAM boyutunu büyütüp küçülttüm. Antivirüs ü devre dışı bıraktım vs.vs.vs. 1 haftadır uğraşıyorum, bir türlü “Emulator: Process finished with exit code -1073741819 (0xC0000005)” hatasını aşamadım.

    konu hakkıda siz veya bilgisi olan arkadaşlar yardımcı olabilir mi?

  • Hocam merhaba, bir webview uygulamam var açılırken progress bar yükledim sıkıntı yok ama açıldıkdan sonra site içerisinde başka bir sayfaya gitmesi için tıkladığımda örneğin ana sayfadan iletişim sayfasına gitmek için tıkladığımda tekrardan iletişim sayfası yüklenene kadar progressbar gelmesini istiyorum yardımcı olabilirmisiniz. Bu olmadığı için bazı sayfalara tıklanıyor arka tarafta yükleme işlemi yapılıyor ancak geç sürdüğü durumlarda kullanıcı yüklenmediğini veya uygulamanın donduğunu düşünebiliyor bi fikriniz varsa yardımınız için teşekkür ederim şimdiden iyi çalışmalar.

  • Merhaba, Taha hocam sitenizi çok beğeniyorum. Benim için çok faydalı oldu, emek verenlere teşekkür ediyorum. Bir sorum olacak; webview uygulamasında kullanıcının açtığı bir sayfayı indir butonuna basıp indirebilmesini ve daha sonra bu sayfaya offline olarak ulaşabilmesini istiyorum, bunu nasıl yapacağım.

  • uygulama projem, telefon uygulaması google chrome aktif iken uygulama içindeki hedef url de olan oyundaki nick rumuz bağlantısı arka planda kesiliyor.

    google chrome devredışı bıraktigimda ise oyundaki nick bağlantısı arka planda kopmadan çalışıyor.

    webview ile foregorund web service nin güncel google chrome ye bağlı kopma sorununu cözemedim.

    • Webview kodlamasında google chrome nin etkilemeyecegi bir webview kodlamasi varmidir acaba. Cunku bu google chrome guncel iken baglanti kopma sorunu yasiyor foreground service. Chromeyi guncellemeyi kaldirirsam veya devredışı birakirsam sorunsuz arka planda baglanti kopmadan calisiyor.

      Baglanti kopmasi yasayan hedef url deki oyundaki nick rumuz baglantisi kesiliyor.. google chrome devredisiyken veya chrome guncellemesini kaldirirsam kopmuyor.
      Bu sorunu nasil cozebilirim.

  • verdiğiniz dosyaları indirdim emeğinize sağlık yorumlarda arkadaşlara bazı kodları paylaşmışsınız bu kodları anasayda.java’yamı ekliyoruz eğer öyleyse hangi satıra eklediğimizin önemi var mı?

  • bir web site içerisinde bulunan _blank ayrı sekmeleri nasıl devre dışı bırakabiliriz? Veya aynı webview içinde nasıl çalıştırabiliriz?

  • Öncelikle harkia anlatmisnin.WebView ekledik pekiya degiştirmek istediğimiz yerler için JavaScript nasil ekliyeceğiz.yada Ujs nasil içine enjekte edicez.Bilgilendirseniz çok sevinirim. [email protected] dan bana ulaşabilrsiniz.

  • Merhaba, öncelikle paylaşım için teşekkürler.

    Bu kaynak kodunu kullanıp ve biraz araştırma yaparak bir webview oluşturabildim.

    Çözemediğim ve konu hakkında nasıl araştırma yapacağımı bilemediğim için sizden yardım istiyorum.

    Webview’i sohbet sitesinde kullanıyorum ve alt kısıma admob ekledim. Buraya kadar her şey normal ve sorun yok. Ama yazı yazma alanı admob ile yakın olduğu ve yanlışlıkla tıklanma olasılığı yüksek olduğu için şuan reklam gösterimlerim kısıtlandı.

    Webview ve admob arasında bir kaç boşluk bırakmak istiyorum hatta o boşluğa tıklanmayacak başka bir banner’da gelebilir ama yeterli reklam ve yazı alanı arasında boşluk oluşsun.

    Kullandığım kodlar aşağıdaki gibidir.

    </androidx.constraintlayout.widget.ConstraintLayout

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?