我正在尝试创建一个WebView应用程序,能够像Facebook Messenger聊天气泡一样运行,可以使用以下github项目覆盖其他应用程序:https://github.com/siddharth2010/Bubbles
我下载了这个项目并启动了它,它在默认参数下工作得很好,但是当点击“气泡”时,我希望它显示一个网站,而不是它目前拥有的占位符图像和文本。
以下是我所做的修改:
sample_view.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"/>
尝试在虚拟机或实际设备中运行此命令将导致立即崩溃。
奇怪的是,当只有WebView view = (WebView) findViewById(R.id.webView);
未注解时,它会启动just find,但getSettings,setWebViewClient,loadUrl中的任何一个都会导致应用程序在启动时立即崩溃。
究竟是什么导致了坠机?我是相当新的Android开发,但经过几个小时的寻找stackoverflow职位与类似的问题,我还没有能够得到它的工作...
3条答案
按热度按时间waxmsbnn1#
我想你的activity_main布局中没有start_bubble视图。
你应该添加按钮到你的activity_main,然后你应该改变这一行。
View startBubble = findViewById(R.id.start_bubble);
Button startBubble = findViewById(R.id.start_bubble);
5kgi1eie2#
事实证明,我试图在一个不活跃的布局中选择一个WebView,这导致了崩溃,修复方法是简单地选择其中包含WebView的布局
pokxtpni3#
这对于那些处理webview崩溃并从中恢复的人来说也非常有用。
终止处理API终止处理API处理WebView对象的渲染器进程停止的情况,原因可能是系统终止渲染器以回收必要的内存,也可能是渲染器进程崩溃。通过使用此API,您可以让应用继续执行,即使渲染器进程已停止。
https://developer.android.com/develop/ui/views/layout/webapps/managing-webview#termination-handle
}
破坏WebView
以编程方式重建它