2017-08-31 88 views
3

當試圖在我的Android Things webview加載網頁時最初加載的網頁,然後通過指向IoT FrameworkPackageStubs的錯誤消息來崩潰UI。Webview loadurl崩潰

我在Dev Preview 5.1上使用Raspberry Pi,它支持Webviews和OpenGL,但不知道爲什麼我的非常簡單的應用程序似乎崩潰了。它的代碼如下所示

@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"); 
} 

這裏是我的清單文件

<?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> 

和我的搖籃depdencies

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和類型的搜索與它相同的消息崩潰。

感謝您的協助。

+0

請點擊這裏提交錯誤報告?成分= 192720&模板= 847005 – Devunwired

回答

1

您可能會遇到與here相同的問題。

在Android中加載鏈接時,默認情況下,系統將嘗試啓動應用程序以處理URL,在這種情況下爲瀏覽器。不過Android的默認情況下不包含瀏覽器,所以它無法處理URL和崩潰。

您可以覆蓋此默認行爲,並在您的應用程序的WebView中的URL負載,通過加載任何URL之前設置WebViewClient在您的應用程序:

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

這是記錄here

0

如果你有一個Web視圖與進度條,然後將代碼如下下來:https://issuetracker.google.com/issues/new:

WebView myWebView = (WebView) findViewById(R.id.webView3); 

     progressDialog = new ProgressDialog(YOUR_ACTIVITY.this); 
     progressDialog.setCancelable(true); 
     progressDialog.setMessage("Please wait...."); 
     progressDialog.show(); 

     myWebView.setWebViewClient(new WebViewClient() { // setting Progress Bar 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       Log.d(TAG, "LOADING"); 
       return true; 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       if (progressDialog.isShowing()) { 
        progressDialog.dismiss(); 
       } 
      } 

     }); 

     myWebView.setInitialScale(1); 
     myWebView.getSettings().setLoadWithOverviewMode(true); 
     myWebView.getSettings().setUseWideViewPort(true); 
     myWebView.getSettings().setJavaScriptEnabled(true);myWebView.loadUrl("https://www.google.com"); 

     myWebView.getSettings().setSupportZoom(true); 
     myWebView.getSettings().setBuiltInZoomControls(true); 
     myWebView.getSettings().setDisplayZoomControls(false);