java - Webview loadurl 崩溃

标签 java android webview android-things

当尝试在我的 Android Things webview 中加载 url 时,页面最初加载,然后使 UI 崩溃并显示一条指向 IoT FrameworkPackageStubs 的错误消息。

我在 Dev Preview 5.1 上使用支持 Webview 和 OpenGL 的 Raspberry Pi,但不知道为什么我的非常简单的应用程序似乎崩溃了。它的代码如下

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

    WebView webView = (WebView) findViewById(R.id.webView);
    if(webView != null)
    webView.loadUrl("https://www.facebook.com");
}

这是我的 list 文件

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

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <uses-library android:name="com.google.android.things" android:required="false"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

和我的 Gradle 依赖项

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    provided 'com.google.android.things:androidthings:0.5.1-devpreview'
}

最后是我在调用电话时收到的错误消息。

    --------- beginning of crash
08-31 20:30:33.458 10146-10146/com.google.android.iot.frameworkpackagestubs E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                              Process: com.google.android.iot.frameworkpackagestubs, PID: 10146
                                                                                              java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.google.android.iot.frameworkpackagestubs/com.google.android.iot.frameworkpackagestubs.Stubs$BrowserStub}: java.lang.ClassNotFoundException: Didn't find class "com.google.android.iot.frameworkpackagestubs.Stubs$BrowserStub" on path: DexPathList[[zip file "/system/app/IoTFrameworkPackageStubs/IoTFrameworkPackageStubs.apk"],nativeLibraryDirectories=[/system/app/IoTFrameworkPackageStubs/lib/arm, /system/lib, /system/vendor/lib, /system/lib, /system/vendor/lib]]
                                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2718)
                                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                                                  at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
                                                                                                  at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                                  at android.os.Looper.loop(Looper.java:164)
                                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6541)
                                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
                                                                                               Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.iot.frameworkpackagestubs.Stubs$BrowserStub" on path: DexPathList[[zip file "/system/app/IoTFrameworkPackageStubs/IoTFrameworkPackageStubs.apk"],nativeLibraryDirectories=[/system/app/IoTFrameworkPackageStubs/lib/arm, /system/lib, /system/vendor/lib, /system/lib, /system/vendor/lib]]
                                                                                                  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
                                                                                                  at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                                                  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                                                  at android.app.Instrumentation.newActivity(Instrumentation.java:1173)
                                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708)
                                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
                                                                                                  at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
                                                                                                  at android.os.Handler.dispatchMessage(Handler.java:105) 
                                                                                                  at android.os.Looper.loop(Looper.java:164) 
                                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6541) 
                                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

我承认有些网站确实有效,但当我访问 https://www.google.com 时并输入一个搜索,它会因相同的消息而崩溃。

感谢您的协助。

最佳答案

您可能会遇到与 here 相同的问题.

当在 Android 中加载链接时,默认情况下系统将尝试启动一个应用程序来处理 URL,在本例中为浏览器。但是,默认情况下,Android Things 不包含浏览器,因此它无法处理 URL 并崩溃。

您可以通过在加载任何 URL 之前在您的应用中设置 WebViewClient 来覆盖此默认行为并将 URL 加载到您应用的 WebView 中:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());

这已记录在案 here .

关于java - Webview loadurl 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989709/

相关文章:

android - 为什么 gettag() 的值在 textview 的 onclicklistener 上变为空?

javascript - 在 web View 中放置 svg 对象

java - 多线程安全类

java - BoxLayout 无法共享

android - MediaExtractor.advance() - 比预期更早发出流结束信号

android - 如何以完整 HTML 格式在 WebView 中显示来自 feedburner 的内容?

Android WebView - history.go(-1)

java - 如何在Java语言中使用logger.log(LEVEL.DEBUG,消息/实例)

java - 从方法返回特定的数组元素

android - 更改 AlertDialog.Builder 按钮颜色