-- android, java

Android :: Statik Html ve JavaScript

WebView içinde bir web sayfasını göstermek için aşağıdaki kod kullanılıyor.

	WebView wv;
	wv = (WebView) findViewById(R.id.webview);
	wv.loadUrl("https://www.google.com");

Tabi bunu kullanabilmek için uygulamamıza internete erişim iznini vermemiz gerekiyor. Bunun için de AndroidManifest.xml dosyası içinde uygun yere aşağıdaki satırı ekliyoruz.

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

Çalıştırdığımızda aşağıdaki gibi bir görüntü elde ediyoruz.

Buraya kadar bir sıkıntı yok zaten bilinen şeyler. Peki kendi hazırladığımız bir html sayfasını nasıl gösteririz?

Bunun için html içeriğimizi oluşturup bir stringe atıyoruz ve WebView içinde o stringi gösteriyoruz.

String strHtml = "<html><head></head>"
				+ "<body text=\"#444444\" bgcolor=\"#CCCCCC\">"
				+ "<br /><br /><center><h2>" + "Static html content in Android"
				+ "</h2></center></body></html>";

		wv.loadData(strHtml, "text/html", "UTF-8");

Artık internet erişimine gerek kalmadığı için Manifest dosyamızdan o izni kaldırabiliriz. Bu string içinde CSS de kullanılabilir. Bunlar yeterli değil, JavaScript de olsun diyorsanız aşağıdaki satırı WebView tanımlamasında sonra eklemeniz gerekir.

wv.getSettings().setJavaScriptEnabled(true);

Örnek uygulamada kullandığım java dosyası:

package com.oguz.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;

public class WebViewTest extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		getWindow().setFlags(
				WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
		setContentView(R.layout.webwiew_test);

		WebView wv = (WebView) findViewById(R.id.webkitWebView1);

		String strHtml = "<html><head></head>"
				+ "<body text=\"#444444\" bgcolor=\"#CCCCCC\">"
				+ "<br /><br /><center><h2>"
				+ "Static html content in Android</h2>"
				+ "<script type=\"text/javascript\">"
				+ "document.write(Date());</script>"
				+ "</center></body></html>";

		wv.getSettings().setJavaScriptEnabled(true);
		wv.loadData(strHtml, "text/html", "UTF-8");
	}
}

XML dosyası ise:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<android.webkit.WebView android:id="@+id/webkitWebView1"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent">
	</android.webkit.WebView>
</LinearLayout>

Yorum yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

19 Yorum

  1. Güzel bir yazı.Güzel bir blog.Yer imlerime ekledim :)

  2. merhaba öncelikle yazınız için teşekürler, ben web sayfamı androidte göstermek istiyorum fakat yapamıyorum biraz yardımcı olurmusunuz mail adresime cevap yazarsınız veya burada paylaşırsanız çok sevinirim hiç bir sitede bulamadım.

  3. Android’de göstermek istiyorum fakat yapamıyorum demişsin fakat nasıl bir yöntem izledin, ne tür bir hata aldın onları bilmeden önerebileceğim fazla bir şey yok.
    Browserın adres satırına web sayfasının adresini yazıp çalıştırdığında görünür genelde.

  4. hocam o yöntemi biliyorum benim yapmak istediğim if komutu vermek, yani şöyle anlatayım mesala bir web sayfanız var ve bunu Android’e aktarmak istiyorsunuz webview ile çok basit oluyor ben farklı bir dizayn yaparak site içeriğini aktarmak istiyorum. Fakat ne kadar kaynak aradıysam bulamadım:S

  5. WebView olmaz diyorsan WebView’ın işini gören bir component yazman, sonra da onu kullanman gerekir diye düşünüyorum. Ayrıca WebView kullanarak yapmak istememenin sebebini de çok merak ettim. Tam ekran kullanmazsan, bir tasarım içine yerleştirebilirsin WebView’ı. Default özelliklerini kullanmazsın, var olan özelliklerini de değiştirirsen istediğini almış olursun gibi geliyor.

  6. cevabınız için teşekürler, biraz daha açayım isterseniz olayı. bugün mesala sahinden.com’un android uygulaması çıktı onun tarzı birşey yapmak istiyorum. Dizayn kendim ayarlamak istiyorum. Fakat kodlamada sıkıntı çıktı menümde problem yok ama java.class yerine geçince kaba tabiriyle apışıp kaldım webview’in belki gelişmiş seçenekleri vardır ben bilmiyorumdur:S

  7. sahibinden.com uygulamasının marketteki ekran görüntülerine baktım ama orda nerde WebView kullanılmış çözemedim. Orada kullanılan sanırım WebView değil. Webservisler ile karıştırıyor olabilirsin. Verileri webservisten aldıktan sonra zaten istediğin tasarımı giydirip kullanabilirsin.

  8. işte hocam onu nasıl yapabilirim diye soracaktım size, o tarz bir uygulama yapmam lazım bir tanesinin örneğini paylaşırsanız devamını gerirebilirim. teşekürler

  9. Onun için elinde verileri alabileceğin bir webservis olması gerekiyor. Eğer zaten var olan bir servisi kullanmayacaksan server tarafını da senin yazman gerekir. Bunun için wsdl, soap (ya da rest), xml, webservis olaylarını bir araştır internetten. Bir günde yapılacak bir olay değil ama onu da belirteyim.
    Eğer elinde bir servis varsa, verileri ordan çekip Android uygulamanda göstermek istiyorsan da soap servisler için ksoap2 kütüphanesini önerebilirim. Rest servisler için bir uygulama yapmadım ama onun için de piyasada örnek ve döküman bolca var.
    Aşağıda iki arkadaşımın bu konu hakkında yazdıkları yazıların adreslerini yazıyorum. Umarım faydası olur.
    1 – getitandroid.com/programlama/77-android-ksoap2-kullanarak-android-uezerinden-web-servislere-eriim.html
    2 – ethemsulan.com/2011/11/using-ksoap2-for-android-and-parsing-soap-wsdl-output-data.html

  10. teşekürler bilgileriniz için, sanırım baya bir zahmetli iş gibi görünüyor bu hafta sonu bir kurculamaya başlıyayım:)

  11. peki html de türkçe karakter kullanılırsa ne oluyor denedinizmi?

  12. @savas
    Denedim bir sıkıntı olmuyor.
    wv.loadData(strHtml, “text/html”, “UTF-8”); satırı size bu konuda ipucu verebilir.

  13. Hocam android uygulamasından web sitelerindeki formlra yorum yazma veya siteye resim ekleme uygulaması yapmak istoyorum bunun için bilgi verebilir misiniz ?

  14. @Barış
    Herhangi bir siteye yorum yazamazsınız. Bunun için web tarafını da sizin yazmanız gerekir. HttpRequest ya da Webservisleri kullanarak haberleşmeyi sağlayabilirsiniz. Android tarafından post ettiğiniz veriyi server’da yakalayıp gerekli işlemleri server tarafında yapmak lazım.

  15. Merhabalar,

    Öncelikle paylaşım için teşekkürler. Benim sormak istediğim bir şey var. Benim uygulamanın içinde arka planda webview ile bir sayfa açıp arka planda bu sayfanın içerisindeki butona tıklamam gerekiyor. Ve bu butondan dönen veriyi almam gerekiyor.

    Kısaca şöyle söyliyim ben bir sayfayı açtığımda nasıl o sayfa üzerine javascript kodu yazabilirim ?

    Teşekkürler,

  16. Hocam merhabalar, merak ettiğim bir konuydu bu. Anlattığınız için teşekkürler.
    Fakat html dosyamı proje klasörüme atıp loadurl içine dosya yolunu yazsam webview içinde o html dosyası çalışır mı ?