解决部分WebView无法播放视频的情况

解决部分WebView无法播放视频的情况,第1张

webview 核心配置如下:

webViewsetWebChromeClient(newWebChromeClient());

webViewgetSettings()setAllowFileAccess(true);

以上配置在部分山寨android机依然无法实现视频播放, 但是调用机器自带HTMLViewer可以播放, 于是反编译apk查看源码后得知需要在AndroidManifestxml中添加<uses-permission android:name="androidpermissionWAKE_LOCK"/>权限, 原因未知待摸索验证。

1)通过一个类的全限定名来获取定义此类的二进制字节流。

2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。

3)在java堆中生成一个代表这个类的Class对象,作为访问方法区中这些数据的入口。

android 端用WEBVIEW可以做 ,WEBVIEW可以加载你服务器上的网站,里面上传视频,客户端可以直接播放网络视频,当然也可以下载下来播放,就是用输入输出流做。可以选择用>

h5作为webview嵌套,小程序或客户端如果涉及全屏,会较为麻烦。

ios播放视频时,一般会默认全屏,阻止全屏反而会麻烦一些。

而安卓单靠h5是没法完成,视频全屏的。

需要客户端支持。

实现video是没法直接点击的,一般用div定位覆盖上去。

则是poster的属性可以不用img。

x5为微信h5的一种内核,类似webkit且不要写 playsinline 类似的任何属性。

那个是阻止全屏的 !!!

安卓webview客户端处理参考:

>

最近遇到关于获取webview加载网页上的点击事件,三种解决方式~~~

一、跟后台协商好,点击该按钮加载特定url,通过webview的代理方法- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType 判断加载的url是否是协商好的url;

ps:记得要return NO,否则会加载url

二、通过获取所点击按钮的来判断是否点击特定位置

1、给webview的scrollview添加手势

2、实现UIGestureRecognizerDelegate代理方法

documentelementFromPoint 是获取点击坐标的元素

三、通过注入一段JS(需跟web前端协商),返回一段json数据

1、在webview加载完后注入js(具体根据需求定义)

例子:

2、拦截自定义的字段 kqapp://

The extensive Android SDK allows you to do many great things with particular views like the WebView for displaying webpages on Android powered devices

Android SDK 的扩展通过使用特定的view允许你做许多事情比如WebView用来在Android手机上展示网页

As of lately while I was experimenting with the Android SDK I was using a WebView in one of my activities

最近我在体验Android SDK的时候在一个Activity中用到了WebView

From that particular WebView I needed to know the ContentHeight but also the ContentWidth

从WebView我不但想要知道ContentHeight还想知道ContentWidth

Now getting the contentHeight is easy like so:

现在的情况是获取contentHeight很easy如下

webviewgetContentHeight();

Unfortunately getting the contentWidth from a WebView is rather more difficult since there is not a simple method like:

不幸的是从一个WebView获取contentWidth是相当困难因为SDK中没有一个像这样的方法

// THIS METHOD DOES NOT EXIST!

webviewgetContentWidth();

There are ways to get the contentWidth of the rendered HTML page and that is through Javascript If Javascript can get it for you then you can also have them in your Java code within your Android App

当然是有方法获取contentWidth的就是通过Javascript来获取如果你能够支持Javascript那么你就可以在你的Android 程序中使用java代码来获取宽度

By using a JavascriptInterface with your WebView you can let Javascript communicate with your Android App Java code by invoking methods on a registered object that you can embed using the JavascriptInterface

通过在你的WebView中使用JavascriptInterface通过调用你注册的JavascriptInterface方法可以让Javascript和你的Android程序的java代码相互连通

So how does this work

怎么做呢?

For a quick example I created a simple Activity displaying a webview that loads a webpage wich displays a log message and a Toast message with the contentWidth wich was determined using Javascript Note that this happens AFTER the page was finished loading because before the page is finished loading the width might not be fully rendered Also keep in mind that if there is content loaded asynchronously that it doesnt affect widths (most likely only heights will be affected as the width is almost always fully declared in CSS files unless you have a % width webpage)

搭建一个快速的例子创建一个简单的展示webView的Activity一个LogCat消息一个Toast消息用来显示我们通过 Javascript获取的宽度注意这些会在网页完全加载之后显示因为在网页加载完成之前宽度可能不能够正确的获取到同时也要注意到如果是异 步加载这并不影响宽度(最多高度会受影响因为宽度总是在CSS文件中做了完全的定义除非在网页中你用了%宽度)

Below is the code of the Activity Mainjava:

下面的代码是Activity的代码

package compimmosandroidsampleswebviewcontentwidth;

import androidappActivity;

import androidosBundle;

import androidutilLog;

import androidwebkitWebView;

import androidwebkitWebViewClient;

import androidwidgetToast;

publicclass Main extends Activity {

privatefinalstatic String LOG_TAG = "WebViewContentWidth";

privatefinal Activity activity = this;

privatestaticint webviewContentWidth = ;

privatestatic WebView webview;

/ Called when the activity is first created /

@Override

publicvoid onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutmain);

webview = (WebView) findViewById(Ridwebview);

webviewgetSettings()setJavaScriptEnabled(true);

webviewsetSaveEnabled(true);

webviewaddJavascriptInterface(new JavaScriptInterface() "HTMLOUT");

webviewsetWebViewClient(new WebViewClient() {

@Override

publicvoid onPageFinished(WebView view String url) {

webviewloadUrl("javascript:windowHTMLOUTgetContentWidth(documentgetElementsByTagName(html)[]scrollWidth);");

}

});

webviewloadUrl(";);

}

class JavaScriptInterface {

publicvoid getContentWidth(String value) {

if (value != null) {

webviewContentWidth = IntegerparseInt(value);

Logd(LOG_TAG "Result from javascript: " + webviewContentWidth);

ToastmakeText( activity

"ContentWidth of webpage is: " +

webviewContentWidth +

"px" ToastLENGTH_SHORT)show();

}

}

}

}

Below is the XML layout used with the Activity wich only contains a simple WebView:

下面是Activity的Layout主要就是一个简单的WebView

<xml version="" encoding="utf">

<LinearLayout

xmlns:android=";

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<WebView android:id="@+id/webview"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>

AndroidManifestxml layout:

AndroidManifestxml代码

<xml version="" encoding="utf">

<manifest

xmlns:android=";

package="compimmosandroidsampleswebviewcontentwidth"

android:versionCode="" android:versionName="">

<application android:icon="@drawable/icon"

android:label="@string/app_name">

<activity android:name="Main"

android:label="@string/app_name">

<intentfilter>

<action android:name="androidintentactionMAIN" />

<category

android:name="androidintentcategoryLAUNCHER" />

</intentfilter>

</activity>

</application>

<usessdk android:minSdkVersion="" />

<usespermission android:name="androidpermissionINTERNET" />

</manifest>

You can also download the full source of Android Application WebViewContentWidth!

功能实现情况:通过webrtc实现手机端和PC端视频语音通信;手机端通过webview加载和调用摄像头显示视频窗口

问题:在局域网内视频和语音通信正常;公网测试时,手机端连接时间过长(几分钟后) , 就与服务器端断开连接;

求遇到过相关问题的大神指导!

以上就是关于解决部分WebView无法播放视频的情况全部的内容,包括:解决部分WebView无法播放视频的情况、ios 如何获取webview点击的链接并用新的webview显示、android webview内嵌html页面播放远程视频文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9778963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存