Android

Android – WebView Kullanımı

Uygumanızdan çıkmadan bir web sayfasına yönlendirme yapmak ya da hazırladığınız bir html sayfayı uygulamanız içerisinde açmak gibi işlemler için WebView‘i kullanabilirsiniz.

WebView Nedir?

WebView, hem uzak sunuculardaki web sayfalarını hem de uygulamanız içerisine koyduğunuz html sayfalarını görüntüleyebileceğiniz bir bileşendir. Bu bileşeni kullanarak uygulamanızdan çıkmadan web sayfalarını görüntüleyebilirsiniz.

Şimdi, basit bir uygulama ile WebView‘in nasıl çalıştığını görelim. Uygulamamız ile webview içerisinde bir web sayfasını açalım.

Tasarım

Layout klasörü içerisinde yer alan activity_main dosyamızın içerisine WebView bileşenini koyuyoruz.

WebView

Kodlama (MainActivity)

MainActivity sınıfımızın içerisine de aşağıdaki kodları yazıyoruz.

Kodlar içerisinde yer alan açıklama satırlarında, gerekli bazı açıklamaları yazdım. Bunlar dışında kodu incelersek;

  • ProgressDialog‘un kullanımını gördük. ProgressDialog, kullanıcıya bir işlem yapıldığının uyarısını vermek için kullanılır. Burada da sayfanın yüklendiğini belirtmek için kullandık. show() metoduyla açıp, dismiss() metoduyla kapattık.
  • WebViewClient sınıfı, web sayfasının handle edildiği sınıftır. Bu sınıf sayesinde;
    • Sayfa yüklenirken bir hata oluşursa bunu yakalayıp kullanıcıyı bilgilendirebiliyoruz.
    • Sayfa tamamen yüklendiği anda ProgressDialog‘u kapatabiliyoruz.

İnternet İzni (Android Manifest)

Uygulamamızın web sayfasını açabilmesi için cihazın internetini kullanması gerekiyor. Bu sebeple kullanıcı uygulamayı yüklerken kullanıcıdan internet kullanımı için izin almalıyız. Bu işlem için Android Manifest dosyamızın içerisine aşağıda gördüğünüz 10. satırı ekliyoruz.

Ekran Görüntüleri

Uygulamamız aşağıdaki gibi gözükmektedir.

Screenshot 2015-05-22 23.04.38

WebView’in daha birçok farklı kullanım alanı mevcut. Bu yazıda temel kullanımı için örnek uygulama hazırladık. İlerleyen yazılarda farklı kullanımlarınıda göreceğiz.

Kaynak Kodlar

Uygulama dosyaları için: https://github.com/mursidyazar/Android-WebView.git

Benzer Yazılar

Android Görsel Bileşenler;

  1. TextView ve EditText
  2. ImageView
  3. Button ve StateListDrawable
  4. Toast
  5. ListView
  6. WebView
  7. Spinner
  8. CheckBox
  9. ProgressBar
  10. SeekBar
Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği mezunudur. Java dilinin temellerine hâkimdir. iGones’da Mobil Uygulama Geliştirici olarak çalışmaktadır. Genellikle Android uygulamaları geliştiren ve bu alanda çalışırken başkalarına da yardımcı olmayı görev edinen bir YAZARdır.
  • Müslüm Gümüşlüoğlu

    İyi günler kolay gelsin, webview le dosya seçtirip post ile gönderme işlemi yapamak istiyorum fakat problem şu 4.4 kitkat da bu olmuyor diger versiyonlarda yapabilyiorum. Bu problemim için bir çözüm öneriniz varmı acaba.

  • Pingback: Android – TextView ve EditText Kullanımı()

  • Pingback: Android – ImageView Kullanımı()

  • Yiğit

    Merhaba aynı şekilde yapıyorum fakat apk olarak çıkartacağımda verdiğim izinler otomatik olarak AndroidManifest dosyasından siliniyor yardım edebilir misiniz ?

    • Merhaba Yiğit, apk’ya dönüştürmek için bir program falan mı kullanıyorsun? Böyle bir durumla karşılaşmamıştım. Bir program kullanıyorsan onda bir sıkıntı olabilir. Bu arada apk’ya dönüştürme işlemini test için falan yapıyorsan, direk bin klasörü altında apk dosyası oluşturuluyor otomatik olarak. O apk dosyasını cihazlara yükleyebilirsin.

  • Can YİĞİTEROL

    Merhaba ben Yaptım ancak Sitede herhangi biyere tıklayınca Yeni tarayıcıda açıyor nasıl düzeltebilirim ?

    • Merhaba Can,

      Normalde WebView’in browser’a yönlendirmemesi lazım. Sorun üzerine ufak bir araştırma yaptım. Bazı durumlarda dediğin gibi olabiliyormuş. Aşağıdaki cevabı inceleyebilirsin. WebViewClient’ın bir metodunu daha override etmen gerekiyor. Onu eklersen muhtemelen düzelir.

      http://stackoverflow.com/a/2379054

  • Pingback: Android M ile Gelen Özellikler | Kod5.org()

  • Pingback: Android – SeekBar Kullanımı | Kod5.org()

  • Pingback: Android – Toast Kullanımı | Kod5.org()

  • Mesut

    İyi günler ben şunu sormak istiyorum.Webwiew de siteyi açıyor ama siteden dosya indirmesi yapmıyor.Bu sorunu nasıl cozebilirim

  • Serdar

    Selam,
    Ben google ın politikası hakkında bir bilgi almak istiyorum. bir apk nın webview yüzünden banlanması muhtemelmidir. Burada bir kontrol eksik. Herhangi bir siteyi kendi sitem gibi uygulamamın içine gömebiliyorum. Google bunun iiçin kesin bir önlem almiştir. Sitemi google a bir yerde göstermem gerekiyor gibi geliyor. email vb . Kendi sitem için webview kullanacağım ama bir şeyleri eksik yaptığım içinde banlanmasın istiyorum.

    • Mürşid YAZAR

      Merhaba, alttaki satırları kodunuza eklerseniz zoom kontrolleri gözükmeyecektir.
      webView.getSettings().setBuiltInZoomControls(false);
      webView.getSettings().setSupportZoom(false);

      Ayrıca api 11 ve üzeri için şu satırı da kullanabilirsiniz;
      webView.getSettings().setDisplayZoomControls(false);

  • merhaba admin web sitelerinde cıkan yakınlastır uzaklastır bolumunu nasıl etkısızlestırırrım konuyla alakasız ama lutfen bana yardım et uygulama yaptım web site yonlendırdım fakat uygulamaya gırınce sag altta yakınlastır uzaklastır bolumu cıkıyor kaldıramıyorum

    • Mürşid YAZAR

      Merhaba, alttaki satırları kodunuza eklerseniz zoom kontrolleri gözükmeyecektir.
      webView.getSettings().setBuiltInZoomControls(false);
      webView.getSettings().setSupportZoom(false);

      Ayrıca api 11 ve üzeri için şu satırı da kullanabilirsiniz;
      webView.getSettings().setDisplayZoomControls(false);

  • Burak Sağlık

    Merhaba,

    Android Studio üzerinde ilk defa kod yazmaya başladım. Ve öğrenmek istediğim nacizane bir sorum var size.

    Neyse uzatmadan sorayım hemen;

    Bir websitesi üzerinde çalışmaktayım ve bu sitemin küçük bir android uygulamasını geliştirmek istedim. Her neyse, webview kullandım manifest’ten de gerekli izinleri sağladım (internet, kamera, depolama alanı v.b. gibi) uygulamayı çalıştırdım siteme giriş yaptım herşey çok güzel çalışıyor ama tek sıkıntı şu; normalde telefonun kendi tarayıcısında aynı siteye girip fotoğraf eklemek için dosya seç’e tıklayınca hemen kamera ve belgeler gibi bir bölüm çıkıp yükleyeceğim fotoğrafı seçebiliyorum fakat webview de birşeyler eksik sanırım bir türlü dosya seç’e tıkladığımda aynı şey olmuyor. Butona tıklanılabiliyor ama herhangi bir işlem görmüyor.

    Sorunumu google’da heryerde aradım fakat bulamadım. Problem nerede acaba hala anlamış değilim. Gerekli manifest ve java kodları veya farklı bir işlem için lütfen yardımcı olun.

    Şimdiden teşekkür ederim.

  • Abdullah

    sizde burası böyle oluyor http://i.imgur.com/YbMmiKt.png

    bende neden öyle olmuyorda böyle oluyor

    http://i.imgur.com/UsNXyRu.png

    bide ekranın altında bulamadıgım bu mesaj şeysi cıkıyor

    http://i.imgur.com/DxBdxYK.png

    yardımcı olabilirseniz sevinirim

    • Mürşid YAZAR

      Uygulamayı oluştururken size kullanılacak tema sorulur. Yeni templatelerden biri bu sizin gösterdiğiniz. Sağ alttaki FloatingActionButton. Onu activity_main.xml içerisinden ve MainActivity.java içerisinden de silersen gözükmez. Üst kısım da Toolbar onu da istersen kaldırabilirsin. Ya da google da ActionBar kullanımı diye aratarak isteğinize göre değiştirebilirsiniz.

  • Muhammeb Mermer

    hocam musaıt oldugunuzda yardım edebılı mısınız hata alıyorum, uygulamayı ımport edıyorum olmuyor, calıstırmıyor 🙁

  • Yunus Aydin

    Merhaba hocam,Sizin yazıdığınız tüm kodları yazdım ama 3 hata çıktı.”R” hatası veriyor.Yardımcı olurmusunuz.
    https://uploads.disquscdn.com/images/bdc51fc4940f8a62919204ef658019c12774833f6bc73d50e8af886ced6b295c.png

  • Yunus Emre Özpınar

    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.progressivewebflap.com/
    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

  • aarslqnn
  • Sercan Dorman

    Kardeşim ne zaman bişey arasam internette, sitende cevabını gördüğüm an
    rahatlıyorum. Muhteşem bir site yapmışsın, çok güzel anlatımın var ve
    verdiğin emek de ayrıca önemli. Teşekkür ederim, başarılarının devamını
    dilerim.

  • murat kandemir

    Merhaba, webview ile belli sitelerin açıldığı bir uygulama yaptım. fakat bazı siteler mobil olarak açılmıyor. telefonda webdeki gibi açılıyor. Her siteyi otomatik mobile göre uyarlayabilir miyim?

  • Anlatımınız çok güzel fakat sormak istediğim bir konu var, Herşey hazır vede apk’yide yaptım gayet başarılı, peki üst kısımdaki saat bölümünü nasıl gizleyebiliriz acaba, yani tam ekran sadece site açılsın istiyorumda.

    Saat- Şarj bilgilerinin olduğu en üst kısmı gizleyemezmiyiz.