iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0

webview功用是在應用內部嵌入網頁瀏覽功能,可以讓應用程式不必跳轉到瀏覽器,而是直接在應用內部加載和顯示網頁內容

事前作業

必須先在build(app)添加一個webview的依賴:
image

implementation ("androidx.webkit:webkit:1.8.0")
接著再系統(AndroidManifests)(路徑:app/manifests/AndroidManifests)添加網路權限

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

ui

非常簡易就是拉一個webview物件

 <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="vertical"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <WebView
            android:id="@+id/web"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />


    </LinearLayout>

程式

我們需要兩樣變數來處理網址,webview來綁定元件並把設定在物件上,webSettings則是真正在處理網址,功用是開啟javascript並新增瀏覽頁

程式如下


public class MainActivity extends AppCompatActivity {
    WebView webview;
    WebSettings webSettings;
    String url="https://www.google.com.tw/";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webview = findViewById(R.id.web);

        webSettings=webview.getSettings();
        webSettings.setJavaScriptEnabled(true);//開啟javascript功能
        webview.setWebViewClient(new WebViewClient());//新增瀏覽器客戶端
        webview.loadUrl(url);//讀取url網站
    }

最後處理一下返回的問題,寫了一個如果網頁可以回到上一頁則返回上一頁否則退出activity

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {//如果按下返回鍵&能後退為true
            webview.goBack();//返回上一頁
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

成果展覽

image


上一篇
[day28]LOG
下一篇
[day30]完賽
系列文
深入Android 物件的認識與應用實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言