如何在Android 4.0中的HTML5VFullScreen $ SurfaceVideoView中获取HTML5videoURI?

我想在用户点击video控制栏中的全屏按钮时获取HTML5videoURI。 据此,Android 4.0中的HTML5video视图是SurfaceView,而不是VideoView。

有人能告诉我如何在SurfaceVideoView中获取URI吗? 这是我的代码。 非常感谢。

webView.setWebChromeClient(new WebChromeClient(){ @Override public void onShowCustomView(View view, CustomViewCallback callback) { super.onShowCustomView(view, callback); if (view instanceof FrameLayout){ final FrameLayout frame = (FrameLayout) view; if (frame.getFocusedChild() instanceof SurfaceView){ SurfaceView video= (SurfaceView) frame.getFocusedChild(); } } }); 

容易,使用reflection 。 把它放在onShowCustomView()方法中:

 android.net.Uri mUri = null; try { @SuppressWarnings("rawtypes") Class _VideoSurfaceView_Class_ = Class.forName("android.webkit.HTML5VideoFullScreen$VideoSurfaceView"); java.lang.reflect.Field _HTML5VideoFullScreen_Field_ = _VideoSurfaceView_Class_.getDeclaredField("this$0"); _HTML5VideoFullScreen_Field_.setAccessible(true); Object _HTML5VideoFullScreen_Instance_ = _HTML5VideoFullScreen_Field_.get(((FrameLayout) view).getFocusedChild()); @SuppressWarnings("rawtypes") Class _HTML5VideoView_Class_ = _HTML5VideoFullScreen_Field_.getType().getSuperclass(); java.lang.reflect.Field _mUri_Field_ = _HTML5VideoView_Class_.getDeclaredField("mUri"); _mUri_Field_.setAccessible(true); mUri = (Uri) _mUri_Field_.get(_HTML5VideoFullScreen_Instance_); } catch (Exception ex) { } if (mUri != null) { // There you have, mUri is the URI of the video }