2012-02-02 15 views
7

FULLSCREEN में वेबव्यू में एम्बेड किए गए वीडियो को चलाने का प्रयास करते समय मुझे एनपीई मिल रहा है। यह 3.0 हनीकॉम के साथ ठीक काम कर रहा है लेकिन आईसीएस 4.0+ के साथ नहीं। कोई विचार यह कैसे हल किया जा सकता है?पूर्णस्क्रीन मोड में नहीं चल रहे वीडियो

java.lang.NullPointerException 
    at android.webkit.PluginFullScreenHolder.show(PluginFullScreenHolder.java:85) 
    at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:8849) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4424) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 

किसी भी सुझाव की वास्तव में सराहना की जाएगी। धन्यवाद

+1

यह Android बग है स्टैकट्रेस आप जावा मिलता है। आप कामकाज कर सकते हैं या नहीं हो सकता है, अधिकतर संभावना नहीं है। भविष्य में आईसीएस रिलीज में उम्मीद है। –

उत्तर

1

अपने WebView करने के लिए एक WebChromeClient जोड़ने का प्रयास करें:

webView.setWebChromeClient(new WebChromeClient()); 

दुर्घटना (मुझे लगता है कि हम क्या अनुभव कर रहे थे के समान है) बंद कर देना चाहिए कि लेकिन मुझे नहीं लगता वीडियो में खेलने के लिए इसे पाने होगा पूर्ण स्क्रीन।

ऐसा करने के लिए मुझे लगता है कि आपको ऐसा कुछ करना होगा: Android ICS 4.0 Placing Flash WebView into full screen calls hideAll Method? जो मैं अभी भी पता लगाने की कोशिश कर रहा हूं।

1

समस्या एंड्रॉइड ओएस में एक बग है। इस समस्या को हल करने के लिए आपको एक काम की जरूरत है।
मुझे एक ही समस्या का सामना करना पड़ रहा था। मेरे लिए काम किया चारों ओर काम किया।
आशा इस कुछ लोगों को मदद मिलेगी:
FullscreenableChromeClient बनाएँ और इस पंक्ति जोड़ें:

WebView.setWebChromeClient(new FullscreenableChromeClient(this)); 


public class FullscreenableChromeClient extends WebChromeClient { 
     protected Activity mActivity = null; 

     private View mCustomView; 
     private WebChromeClient.CustomViewCallback mCustomViewCallback; 
     private int mOriginalOrientation; 

     private FrameLayout mContentView; 
     private FrameLayout mFullscreenContainer; 

     private static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

     public FullscreenableChromeClient(Activity activity) { 
      this.mActivity = activity; 
     } 

     @Override 
     public void onShowCustomView(View view, int requestedOrientation, WebChromeClient.CustomViewCallback callback) { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
       if (mCustomView != null) { 
        callback.onCustomViewHidden(); 
        return; 
       } 

       mOriginalOrientation = mActivity.getRequestedOrientation(); 
       FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView(); 
       mFullscreenContainer = new FullscreenHolder(mActivity); 
       mFullscreenContainer.addView(view, COVER_SCREEN_PARAMS); 
       decor.addView(mFullscreenContainer, COVER_SCREEN_PARAMS); 
       mCustomView = view; 
       setFullscreen(true); 
       mCustomViewCallback = callback; 
       mActivity.setRequestedOrientation(requestedOrientation); 
      } 

      super.onShowCustomView(view, requestedOrientation, callback); 
     } 

     @Override 
     public void onHideCustomView() { 
      if (mCustomView == null) { 
       return; 
      } 

      setFullscreen(false); 
      FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView(); 
      decor.removeView(mFullscreenContainer); 
      mFullscreenContainer = null; 
      mCustomView = null; 
      mCustomViewCallback.onCustomViewHidden(); 
      mActivity.setRequestedOrientation(mOriginalOrientation); 
     } 

     private void setFullscreen(boolean enabled) { 
      Window win = mActivity.getWindow(); 
      WindowManager.LayoutParams winParams = win.getAttributes(); 
      final int bits = WindowManager.LayoutParams.FLAG_FULLSCREEN; 
      if (enabled) { 
       winParams.flags |= bits; 
      } else { 
       winParams.flags &= ~bits; 
       if (mCustomView != null) { 
        mCustomView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); 
       } else { 
        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); 
       } 
      } 
      win.setAttributes(winParams); 
     } 

     private static class FullscreenHolder extends FrameLayout { 
      public FullscreenHolder(Context ctx) { 
       super(ctx); 
       setBackgroundColor(ctx.getResources().getColor(android.R.color.black)); 
      } 

      @Override 
      public boolean onTouchEvent(MotionEvent evt) { 
      return true; 
     } 
    } 
} 
संबंधित मुद्दे