首页 > 解决方案 > Webview 导致应用程序在启动时立即崩溃

问题描述

我正在尝试创建一个 WebView 应用程序,其行为类似于 Facebook Messenger 聊天气泡,可以使用以下 github 项目覆盖在其他应用程序之上: https ://github.com/siddharth2010/Bubbles

我下载了项目并启动了它,它使用默认参数工作得很好,但是当单击“气泡”时,我希望它显示一个网站而不是它当前拥有的占位符图像和文本。

以下是我所做的修改:

示例视图.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

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

</RelativeLayout>

MainActivity.java

package com.irunawiki.irunawiki;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.irunawiki.bubbles.FloatingBubblePermissions;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView view = (WebView) findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().getDomStorageEnabled();
        view.setWebViewClient(new WebViewClient());
        view.loadUrl("https://google.com");

        FloatingBubblePermissions.startPermissionRequest(this);
        View startBubble = findViewById(R.id.start_bubble);
        startBubble.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startService(new Intent(getApplicationContext(), SimpleService.class));
            }
        });
    }
}

AndroidManifest.xml

added these:
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

尝试在 VM 或实际设备中运行它会导致立即崩溃。

奇怪的是,它启动只是 find when only WebView view = (WebView) findViewById(R.id.webView);未注释,但任何 getSettings、setWebViewClient、loadUrl 都会导致应用程序在启动时立即崩溃。

究竟是什么导致了崩溃?我对 Android 开发相当陌生,但是经过数小时查找具有类似问题的 stackoverflow 帖子后,我无法使其正常工作......

标签: javaandroidandroid-studiowebviewandroid-webview

解决方案


我认为您的 activity_main 布局中没有 start_bubble 视图。

您应该将按钮添加到您的activity_main,然后您应该将此行更改为此。

View startBubble = findViewById(R.id.start_bubble);

Button startBubble = findViewById(R.id.start_bubble);


推荐阅读