Webview
এই পর্বে আমরা দেখবো কিভাবে কোন ওয়েবসাইট কে এন্ড্রোয়েড অ্যাপে রূপান্তরিত করতে পারি । এজন্য যে ভিউটই নিয়ে কাজ করবো সেটি হল WebView
তো চলুন শুরু করা যাক । প্রথমেই আমরা activity_main.xml এ ছোট ডিজাইন এর কাজটা সেরে ফেলি ।
activity_main.xml -
MainActivity.java -
বরাবরের মত ভিউ কম্পোনেন্ট WebView এর অব্জেক্ট তৈরি করে সেটির সাথে লেআউট এর আইডি যোগ করে দিলাম । এরপর WebSettings এর একটি অব্জেক্ট তৈরি করলাম , কেননা ওয়েব এর সেটিংস অনুযায়ী বাই ডিফল্ট জাভাস্ক্রিপ্ট ডিসাবল করা থাকে , আর আজকাল এমন ওয়েবসাইট নেই যেখানে জাভাস্ক্রিপ্ট নাই , তাই ওয়েবভিউ এর বাই ডিফল্ট সেই সেটিংস চেঞ্জ করতে পরবর্তী লাইনে setJavaScriptEnable ম্যাথড true করার মাধ্যমে জাভাস্ক্রিপ্ট এনাবল করে দিলাম ।
এরপর আমরা যে ওয়েবসাইট টি দেখাতে চাই সেটি loadUrl() এ ভিতর "" এর ভিতর লিখে দিবো । আমি আমার এই ব্লগের ঠিকানা দিয়ে দিলাম । এবার যদি আপনি অ্যাপটি রান করেন তাহলে দেখা যাবে কোন পেজ লোড নিতে আপনার মোবাইলে থাকা ব্রাউজার দিয়ে ওপেন হওয়ার জন্য পারমিশন চাইবে, কিন্তু আমরা চাই অন্য একটি ব্রাউজার এর সাহায্য ছাড়াই আমাদের অ্যাপের ভিতরেই যাতে ওয়েবসাইট টির সব পেজ দেখা যায়। এজন্য এরপরে setWevBiewClient( new WebViewClient()); ম্যাথডের মাধ্যমে আমরা আমাদের অ্যাপের ভিতরেই ব্রাউজ করার নির্দেশনা দিয়ে দিলাম ।
আর হ্যা এখানে যেহেতু নেট এর ব্যাপার আছে তাই অবশ্যই Manifest ফাইলে নেট ইউজ করার পারমিশন লিখে দিতে হবে । এজন্য app -> manifests -> AndroidManifest.xml এ -
এই কোডটি লিখে দেয়ার মাধ্যমে অ্যাপের নেট ইউজ করার পারমিশন দিয়ে দিন । Manifest ফাইলের যেখানে লিখতে হবে -
এবার অ্যাপটি রান করে দেখুন 😊😊😊😊😊
এখন যদি আমরা ওয়েবসাইট এর কোন একটি অপশনে গিয়ে আবার ব্যাকে ফিরতে চাই তাহলে দেখা যাবে অ্যাপটিই কেটে যাবে , এজন্য যে অবস্থায় অ্যাপটি অবস্থান করছে ঠিক তার পিছনের অবস্থায় ফিরিয়ে নিতে আমাদের আর একটি ম্যাথড লিখতে হবে ।
MainActivity.java তে যে ম্যাথডটি লিখতে হবে সেটি হল onBackPressed -
এই ম্যাথডের ভিতরে একটি কন্ডিশন দিয়ে দিলাম যে যদি আমার ওয়েবভিউ এর ভিতরে পিছনে দিকে যাওয়ার অপশন থাকে তবে যেন পিছনের দিকে যায় আর না হলে যেন একদম পিছনে চলে যায় মানে অ্যাপটি থেকে বের হয়ে যাবে ।
তাহলে আমার MainActivity.java ফুল কোড -
তো চলুন শুরু করা যাক । প্রথমেই আমরা activity_main.xml এ ছোট ডিজাইন এর কাজটা সেরে ফেলি ।
activity_main.xml -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
tools:context="com.example.user.learnfromyoutube.MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
></WebView>
</LinearLayout>
MainActivity.java -
package com.example.user.learnfromyoutube;
import ...
public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("https://androidtutorialbangla.blogspot.com/");
webView.setWebViewClient(new WebViewClient());
}
}
বরাবরের মত ভিউ কম্পোনেন্ট WebView এর অব্জেক্ট তৈরি করে সেটির সাথে লেআউট এর আইডি যোগ করে দিলাম । এরপর WebSettings এর একটি অব্জেক্ট তৈরি করলাম , কেননা ওয়েব এর সেটিংস অনুযায়ী বাই ডিফল্ট জাভাস্ক্রিপ্ট ডিসাবল করা থাকে , আর আজকাল এমন ওয়েবসাইট নেই যেখানে জাভাস্ক্রিপ্ট নাই , তাই ওয়েবভিউ এর বাই ডিফল্ট সেই সেটিংস চেঞ্জ করতে পরবর্তী লাইনে setJavaScriptEnable ম্যাথড true করার মাধ্যমে জাভাস্ক্রিপ্ট এনাবল করে দিলাম ।
এরপর আমরা যে ওয়েবসাইট টি দেখাতে চাই সেটি loadUrl() এ ভিতর "" এর ভিতর লিখে দিবো । আমি আমার এই ব্লগের ঠিকানা দিয়ে দিলাম । এবার যদি আপনি অ্যাপটি রান করেন তাহলে দেখা যাবে কোন পেজ লোড নিতে আপনার মোবাইলে থাকা ব্রাউজার দিয়ে ওপেন হওয়ার জন্য পারমিশন চাইবে, কিন্তু আমরা চাই অন্য একটি ব্রাউজার এর সাহায্য ছাড়াই আমাদের অ্যাপের ভিতরেই যাতে ওয়েবসাইট টির সব পেজ দেখা যায়। এজন্য এরপরে setWevBiewClient( new WebViewClient()); ম্যাথডের মাধ্যমে আমরা আমাদের অ্যাপের ভিতরেই ব্রাউজ করার নির্দেশনা দিয়ে দিলাম ।
আর হ্যা এখানে যেহেতু নেট এর ব্যাপার আছে তাই অবশ্যই Manifest ফাইলে নেট ইউজ করার পারমিশন লিখে দিতে হবে । এজন্য app -> manifests -> AndroidManifest.xml এ -
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
এই কোডটি লিখে দেয়ার মাধ্যমে অ্যাপের নেট ইউজ করার পারমিশন দিয়ে দিন । Manifest ফাইলের যেখানে লিখতে হবে -
এবার অ্যাপটি রান করে দেখুন 😊😊😊😊😊
এখন যদি আমরা ওয়েবসাইট এর কোন একটি অপশনে গিয়ে আবার ব্যাকে ফিরতে চাই তাহলে দেখা যাবে অ্যাপটিই কেটে যাবে , এজন্য যে অবস্থায় অ্যাপটি অবস্থান করছে ঠিক তার পিছনের অবস্থায় ফিরিয়ে নিতে আমাদের আর একটি ম্যাথড লিখতে হবে ।
MainActivity.java তে যে ম্যাথডটি লিখতে হবে সেটি হল onBackPressed -
@Override
public void onBackPressed() {
if(webView.canGoBack()){
webView.goBack();
}else {
super.onBackPressed();
}
}
এই ম্যাথডের ভিতরে একটি কন্ডিশন দিয়ে দিলাম যে যদি আমার ওয়েবভিউ এর ভিতরে পিছনে দিকে যাওয়ার অপশন থাকে তবে যেন পিছনের দিকে যায় আর না হলে যেন একদম পিছনে চলে যায় মানে অ্যাপটি থেকে বের হয়ে যাবে ।
তাহলে আমার MainActivity.java ফুল কোড -
package com.example.user.learnfromyoutube;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("https://androidtutorialbangla.blogspot.com/");
webView.setWebViewClient(new WebViewClient());
}
@Override
public void onBackPressed() {
if(webView.canGoBack()){
webView.goBack();
}else {
super.onBackPressed();
}
}
}
এবার আবার অ্যাপটি রান করে দেখুন 😊😊😊 ধন্যবাদ 😊😊😊
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন