EN

Search
Close this search box.

موستانگ، وحشیِ دوست داشتنی

پاسخ داده شد
0
0

چطور از داخل اپلیکیشن ، صفحات وب را نشان دهیم؟ چطور یک مرورگر داخل اپلیکیشنمان داشته باشیم؟

WebView در اندروید - موستانگ

  • شما باید برای ارسال دیدگاه شوید
پاسخ عالی
0
0

کلاس WebView این امکان را به شما می دهد که صفحات وب را داخل اپلیکیشن خودتان بیاورید. WebView تمام قابلیت های یک مرورگر اینترنت را دارد. نظیر: تاریخچه، کوکی، پشتیبانی از html5 و خیلی ویژگی های دیگر. با WebView کارهای هیجان انگیز زیادی می توانید انجام دهید، مثل ادغام بازی های html5 در اپلیکیشنتان.

نمایش WebView

دو کار ساده باید انجام دهید:

1.WebView را در فایل xml موردنظر خود بگنجانید:

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

2. از داخل اکتیویتی خود، آدرس صفحه موردنظر را فراخوانی کنید:

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

یادتان باشد که برای اتصال به اینترنت، باید اجازه دسترسی به اینترنت را در فایل AndroidManifest.xml قرار دهید:

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

بروزرسانی اول:

اگر سایت داخل اپلیکیشن باز نشد و به جای آن مرورگر گوشی را باز کرد، از کد زیر استفاده کنید:

webView.setWebViewClient(new WebViewClient());

بروزرسانی دوم:

اگر جاوا اسکریپت های سایت کار نکرد، از کد زیر استفاده کنید:

webSetting.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());

بروزرسانی سوم:

اگر با ارور:

ERR_CLEARTEXT_NOT_PERMITTED although site is HTTPS [duplicate]

مواجه شدید، در فایل AndroidManifest و در تگ Application ، از کد زیر استفاده کنید:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>

بروزرسانی چهارم:

اگر می خواهید دکمه بازگشت گوشی روی WebView فعال شود و با زدن آن، کاربر به صفحه قبلی برگردد، از کد زیر استفاده کنید:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
            //if Back key pressed and webview can navigate to previous page
        webView.goBack();
            // go back to previous page
        return true;
    }
    else
    {
        finish();
           // finish the activity
    }
    return super.onKeyDown(keyCode, event);
}

بروزرسانی پنجم:

اگر می خواهید هنگامی که کاربر منتظر باز شدن هر صفحه است، یک نوار پیشرفت نشان داده شود، به این ترتیب عمل کنید:

در فایل Layout ، یک ProgressBar اضافه کنید:

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >


    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:indeterminate="false"
            android:layout_gravity="center"
            />

    </FrameLayout>

و در اکتیویتی ، این کد ها را اضافه کنید:

webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                findViewById(R.id.progressBar1).setVisibility(View.VISIBLE);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                findViewById(R.id.progressBar1).setVisibility(View.GONE);

                findViewById(R.id.webView).setVisibility(View.VISIBLE);
            }
        });

بروزرسانی ششم:

اگر می خواهید با پایین کشیدن صفحه ، محتوا رفرش یا بروزرسانی شود، از این لینک استفاده کنید.


پروژه نهایی

یک پروژه کامل را میتوانید به شکل زیر بسازید:

فایل MainActivity:

package com.example.mustang;

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
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 = (WebView) findViewById(R.id.webView);
        webView.loadUrl("https://www.mustang.ir");
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new WebChromeClient());

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                findViewById(R.id.progressBar1).setVisibility(View.VISIBLE);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                findViewById(R.id.progressBar1).setVisibility(View.GONE);

                findViewById(R.id.webView).setVisibility(View.VISIBLE);
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
            //if Back key pressed and webview can navigate to previous page
            webView.goBack();
            // go back to previous page
            return true;
        }
        else
        {
            finish();
            // finish the activity
        }
        return super.onKeyDown(keyCode, event);
    }
}

فایل activity_main:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:indeterminate="false"
            android:layout_gravity="center"
            />

    </FrameLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

 

فایل AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mustang">

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

    <application
        android:allowBackup="true"
        android:usesCleartextTraffic="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Mustang">
        <activity android:name=".MainActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoTitle"
            android:launchMode="singleTop">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت