WebView ব্যবহার করে অ্যাপে ওয়েবপেজ দেখান
এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে Android-এ WebView ব্যবহার করে একটি ওয়েবসাইট লোড করা, জাভাস্ক্রিপ্ট সক্রিয় করা, এবং ব্যাক বাটন হ্যান্ডলিং করা যায়।
ধাপ ১: প্রজেক্ট তৈরি
ধাপ ২: লেআউট (টাইপো ফিক্স: RelativeLayout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:id="@+id/parent"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</RelativeLayout>
ধাপ ৩: MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
// WebViewClient সেট করুন (লিংক অ্যাপের ভিতরে খোলবে)
webView.setWebViewClient(new WebViewClient());
// URL লোড করুন
webView.loadUrl("https://www.google.com");
// জাভাস্ক্রিপ্ট সক্রিয় করুন
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
// অন্যান্য উপকারী সেটিংস
webSettings.setDomStorageEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDisplayZoomControls(false);
}
// ব্যাক বাটন হ্যান্ডলিং
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
}
ধাপ ৪: ম্যানিফেস্টে ইন্টারনেট পারমিশন
<uses-permission android:name="android.permission.INTERNET" />
WebViewClient vs WebChromeClient
| WebViewClient | WebChromeClient |
|---|---|
| পেজ লোডিং ইভেন্ট (onPageStarted, onPageFinished) | জাভাস্ক্রিপ্ট অ্যালার্ট, কনফার্ম, প্রম্পট |
| URL লোডিং কন্ট্রোল (shouldOverrideUrlLoading) | প্রগ্রেস বার, টাইটেল, ফেভিকন |
| এরর হ্যান্ডলিং (onReceivedError) | কনসোল মেসেজ, জিএস লগ |
দুইটোই একসাথে ব্যবহার করুন: webView.setWebChromeClient(new WebChromeClient());
সুরক্ষা এবং সেরা অনুশীলন
- Cleartext траফিক: HTTP সাইট লোড করতে
android:usesCleartextTraffic="true"ম্যানিফেস্টে (Application ট্যাগে) - Mixed Content: HTTPS পেজে HTTP রিসোর্স ব্লক হয়,
setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW)(API 21+) - Zoom: বিল্ট-ইন জুম কন্ট্রোল ব্যবহার করুন, ডিসপ্লে বন্ধ রাখুন
- Cache:
setCacheMode(WebSettings.LOAD_DEFAULT)বাLOAD_CACHE_ELSE_NETWORK
WebViewAssetLoader (স্থায়ী ফাইল লোড)
assets/res/raw ফাইল লোড করতে WebViewAssetLoader (Jetpack) ব্যবহার করুন, নিরাপদে।