我正在拼凑一个廉价的应用程序,其中包括"框架"我们的一些网站...非常简单的WebViewClient.直到我点击视频.
该视频是作为HTML5 元素完成的,这些在Chrome,iPhone上工作得很好,现在我们修复了它Android在本机浏览器中运行良好的编码问题.
摩擦:WebView不喜欢它.完全没有.我可以点击海报图片,没有任何反应.
谷歌搜索,我发现这是接近,但似乎是基于'链接'(如在href ...)而不是视频元素.(onDownloadListener似乎没有在视频元素上调用...)
我也看到覆盖onShowCustomView的引用,但似乎没有在视频元素上调用...还没有shouldOverrideUrlLoading ..
我宁愿不进入"从服务器拉xml,在应用程序中重新格式化"......通过在服务器上保留故事布局,我可以更好地控制内容而不强迫人们不断更新应用程序.因此,如果我可以说服WebView处理像本机浏览器这样的标签,那将是最好的.
我显然错过了一些明显的东西..但我不知道是什么.
"shouldOverrideUrlLoading"真的被弃用了吗?如果是这样,我可以使用什么呢?
似乎shouldOverrideUrlLoading已经弃用了针对Android N的应用程序,我需要让应用程序自API 19开始工作,直到最新的Android N(测试版),我使用的是Android N中的一些新功能(如Data Saver),因此定位Marshmallow无法解决这个问题,因为我需要使用这些新功能,这是我使用的代码的一部分:
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
if (url.startsWith("http:") || url.startsWith("https:")) {
...
} else if (url.startsWith("sms:")) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是Android Studio给我的消息:
覆盖'android.webkit.WebViewClient'中不推荐使用的方法此检查报告在指定的检查范围中使用不推荐的代码的位置.
我想知道是否使用@SuppressWarnings("deprecation")将让我在API 19上工作直到最新的Android N Beta(及其发布时的最终版本),我无法自己测试,我从未使用过,我需要确定它有效,所以,任何人都能说出来?
android deprecated webview android-webview deprecation-warning
Android的默认浏览器应用程序在您滚动时显示缩放控件,并允许缩放缩放.如何为自己的Webview启用此功能?
我试过了:
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);
Run Code Online (Sandbox Code Playgroud)
但是这两个功能都没有得到启用.顺便说一句WebChromeClient,WebViewClient如果有所作为,我会为Webview 设置一个和一个.
谢谢!
我构建了一个Web应用程序,并希望创建一个具有显示我的Web应用程序的webview的Android应用程序.按照Google Developer的说明创建应用后,我使用Android 5.1.1成功将其安装在手机上.
但是,当我第一次运行应用程序时,webview会显示以下消息:
网页无法显示
无法加载http://www.google.com.sg上的网页:
网:: ERR_CACHE_MISS
在Google上搜索了一段时间并尝试解决方案之后,我仍然坚持这个错误.我已经包含了所有必需的权限,因此不应该这样做.我的Android Studio也已全面更新,因此并非如此.
我从Crashlytics收到错误,表明某些设备缺少com.google.android.webview.这怎么可能呢?
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.app/com.myapp.ReaderActivity}: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
at …Run Code Online (Sandbox Code Playgroud) android proguard webview inflate-exception android-5.0-lollipop
哪个是从webview获取HTML代码的最简单方法?我已经尝试了stackoverflow和google的几种方法,但找不到确切的方法.请提一下确切的方法.
public class htmldecoder extends Activity implements OnClickListener,TextWatcher
{
TextView txturl;
Button btgo;
WebView wvbrowser;
TextView txtcode;
ImageButton btcode;
LinearLayout llayout;
int flagbtcode;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.htmldecoder);
txturl=(TextView)findViewById(R.id.txturl);
btgo=(Button)findViewById(R.id.btgo);
btgo.setOnClickListener(this);
wvbrowser=(WebView)findViewById(R.id.wvbrowser);
wvbrowser.setWebViewClient(new HelloWebViewClient());
wvbrowser.getSettings().setJavaScriptEnabled(true);
wvbrowser.getSettings().setPluginsEnabled(true);
wvbrowser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvbrowser.addJavascriptInterface(new MyJavaScriptInterface(),"HTMLOUT");
//wvbrowser.loadUrl("http://www.google.com");
wvbrowser.loadUrl("javascript:window.HTMLOUT.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
txtcode=(TextView)findViewById(R.id.txtcode);
txtcode.addTextChangedListener(this);
btcode=(ImageButton)findViewById(R.id.btcode);
btcode.setOnClickListener(this);
}
public void onClick(View v)
{
if(btgo==v)
{
String url=txturl.getText().toString();
if(!txturl.getText().toString().contains("http://"))
{
url="http://"+url;
}
wvbrowser.loadUrl(url);
//wvbrowser.loadData("<html><head></head><body><div style='width:100px;height:100px;border:1px red solid;'></div></body></html>","text/html","utf-8");
}
else if(btcode==v)
{
ViewGroup.LayoutParams params1=wvbrowser.getLayoutParams();
ViewGroup.LayoutParams params2=txtcode.getLayoutParams();
if(flagbtcode==1)
{
params1.height=200;
params2.height=220;
flagbtcode=0;
//txtcode.setText(wvbrowser.getContentDescription()); …Run Code Online (Sandbox Code Playgroud) 我想在webview上显示pdf内容.这是我的代码:
WebView webview = new WebView(this);
setContentView(webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf");
Run Code Online (Sandbox Code Playgroud)
我得到一个空白的屏幕.我也设置了互联网许可.
我的一个活动中有一个WebView,当它加载一个网页时,该页面从Facebook收集了一些背景数据.
我所看到的是,每次打开和刷新应用程序时,应用程序中显示的页面都是相同的.
我已经尝试将WebView设置为不使用缓存并清除WebView的缓存和历史记录.
我也遵循了这里的建议:如何为WebView清空缓存?
但这一切都不起作用,有没有人有任何想法我可以克服这个问题,因为它是我的应用程序的重要部分.
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
if(progress >= 100)
{
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
else
{
mProgressBar.setVisibility(ProgressBar.VISIBLE);
}
}
});
mWebView.setWebViewClient(new SignInFBWebViewClient(mUIHandler));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
Time time = new Time();
time.setToNow();
mWebView.loadUrl(mSocialProxy.getSignInURL()+"?time="+time.format("%Y%m%d%H%M%S"));
Run Code Online (Sandbox Code Playgroud)
所以我实现了第一个建议(尽管改变了代码是递归的)
private void clearApplicationCache()
{
File dir = getCacheDir();
if(dir!= null && dir.isDirectory())
{
try
{
ArrayList<File> stack = new ArrayList<File>();
// Initialise the list
File[] children = dir.listFiles();
for(File child:children)
{
stack.add(child);
} …Run Code Online (Sandbox Code Playgroud) 可以使用以下方法进行内容设置web-view loadData(String data,String mimeType,String encoding)
如何处理未知的HTML数据编码问题?!
有编码列表吗?!
我从我的大学知道,在我的情况下,html来自数据库,并使用latin-1编码.我尝试将编码参数设置为latin-1,设置为ISO-8859-1/iso-8859-1,但仍然存在显示ä,ö,ü等特殊标志的问题.
我会非常感谢任何建议.
我已尝试以下内容根据设备屏幕大小调整网页.
mWebview.setInitialScale(30);
Run Code Online (Sandbox Code Playgroud)
然后设置元数据视口
<meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;"/>
<meta name="viewport" content="width=device-width, target-densityDpi=medium-dpi"/>
Run Code Online (Sandbox Code Playgroud)
但没有任何作用,网页没有固定到设备屏幕大小.
谁能告诉我怎么弄这个?