2014-10-30 23 views
1

我正在嘗試爲Android Wear製作一個Web瀏覽器,並且我正在使用android studio。我的充氣代碼。Android Wear中的WebView在運行時給出錯誤

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
      webview = (WebView)findViewById(R.id.wvBrowser); 
      //this will set javascript enabled. 
      webview.getSettings().setJavaScriptEnabled(true); 
      //loading url to google.com 
      webview.loadUrl("https://www.google.com"); 

      webview.getSettings().setLoadWithOverviewMode(true); 
      webview.getSettings().setUseWideViewPort(true); 

      webview.setWebViewClient(new WebViewClient() { 
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
        Toast.makeText(getApplicationContext(), "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
       } 
      }); 

完整的錯誤是下面:

android.view.InflateException: Binary XML file line #11: Error inflating class android.webkit.WebView 
      at android.view.LayoutInflater.createView(LayoutInflater.java:620) 
      at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:57) 
      at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
      at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
      at android.support.wearable.view.WatchViewStub.inflate(WatchViewStub.java:131) 
      at android.support.wearable.view.WatchViewStub.onMeasure(WatchViewStub.java:141) 
      at android.view.View.measure(View.java:16648) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:16648) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2338) 
      at android.view.View.measure(View.java:16648) 
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1959) 
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1145) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1340) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1032) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5657) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
      at android.view.Choreographer.doFrame(Choreographer.java:544) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:136) 
      at android.app.ActivityThread.main(ActivityThread.java:5026) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Constructor.constructNative(Native Method) 
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
      at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:57) 
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
            at android.support.wearable.view.WatchViewStub.inflate(WatchViewStub.java:131) 
            at android.support.wearable.view.WatchViewStub.onMeasure(WatchViewStub.java:141) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2338) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1959) 
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1145) 
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1340) 
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1032) 
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5657) 
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
            at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
            at android.view.Choreographer.doFrame(Choreographer.java:544) 
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5026) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
            at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.UnsupportedOperationException 
      at com.android.webview.nullwebview.NullWebViewFactoryProvider.createWebView(NullWebViewFactoryProvider.java:41) 
      at android.webkit.WebView.ensureProviderCreated(WebView.java:2062) 
      at android.webkit.WebView.setOverScrollMode(WebView.java:2120) 
      at android.view.View.<init>(View.java:3461) 
      at android.view.View.<init>(View.java:3517) 
      at android.view.ViewGroup.<init>(ViewGroup.java:470) 
      at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:52) 
      at android.webkit.WebView.<init>(WebView.java:498) 
      at android.webkit.WebView.<init>(WebView.java:475) 
      at android.webkit.WebView.<init>(WebView.java:455) 
      at android.webkit.WebView.<init>(WebView.java:444) 
            at java.lang.reflect.Constructor.constructNative(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:57) 
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
            at android.support.wearable.view.WatchViewStub.inflate(WatchViewStub.java:131) 
            at android.support.wearable.view.WatchViewStub.onMeasure(WatchViewStub.java:141) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2338) 
            at android.view.View.measure(View.java:16648) 
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1959) 
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1145) 
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1340) 
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1032) 
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5657) 
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
            at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
            at android.view.Choreographer.doFrame(Choreographer.java:544) 
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5026) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
            at dalvik.system.NativeStart.main(Native Method) 

我已經把我的XML正確的id作爲wvBrowser和我在我的Android清單XML文件的權限。有人知道這個問題嗎?先謝謝了。

+0

按你說你的id是wvBrowser和代碼你添加了一些else.check它 – 2014-10-31 04:21:52

回答

3

不能在可穿戴使用的WebView,檢查不可用的功能在這裏的列表: https://developer.android.com/training/wearables/apps/index.html

而且,你不能直接從可穿戴設備連接到互聯網,它不具有互聯網接入,只能從手持設備接收數據。

編輯: 其實,我看到的只有一個辦法做到這一點:

  1. 加載在手持設備上的HTML頁面,並使用Wearable.DataApi
  2. 顯示的頁面轉移到一個可穿戴的可穿戴使用(可能是定製的)第三方html庫。可能來自this answer的項目在這裏會很有用。
+0

哦,好,謝謝...... – ilikeyoyo 2014-11-01 00:31:44

+0

嘛,反正是有,我可以顯示像www.google.com的網頁,因爲我知道在谷歌播放裝載頁面的應用程序,併爲Android穿。 – ilikeyoyo 2014-11-01 17:50:27

+0

請參閱我的編輯。 – esentsov 2014-11-02 09:29:27

相關問題