Tag: android webview

如何在Android WebView中获取加载的网页标题?

我在我的应用程序中使用WebView,我有一个要求根据用户页面更改应用程序的标题。 我怎样才能在Android WebView中做到这一点? 我通过以下行在iphone中做到了这一点 self.title = [webPage stringByEvaluatingJavaScriptFromString:@"document.title"] @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Adds Progrss bar Support this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.webview ); // Makes Progress bar Visible getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); mWebView = (WebView) findViewById( R.id.webview ); //This is the id you gave //to the WebView in the main.xml mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setSupportZoom(true); //Zoom Control on web […]

在Android 4.0.x Ice Cream Sandwich中,WebView不会在应用程序启动时呈现本地HTML页面

我知道这个问题已经在这个论坛上以不同的格式被提出,但是没有任何答案被接受,或者我在那里find的答案都没有帮助我。 我正在使用原生android,HTML和Adboe的Flex SDK(没有任何像PhoneGap等框架,使用Android自己的WebView的简单代码)的混合应用程序。 这是我面临的问题: 当应用程序启动时,首先触发flex sdk的活动“AppEntry” ,这是一个空白的活动,它只是为flex SDK设置上下文和初始设置。 接下来,启动使用WebView加载HTML项目的本机MainActivity 。 在Android 4.0.x(ICS)上 ,甚至认为URL已加载(onPageFinished()被调用成功的URL ) ,webview变成空白(白色)。 这发生在第一次安装和启动应用程序后,停止应用程序(通过从最近的应用程序栏中删除),页面按预期方式加载。 像这样反复重新启动有时会重现问题,但频率不可预知。 有些事情需要考虑: 由于flex sdk约束,这些HTML文件不能直接存储在“/ assets”文件夹中,而是存储在资产文件夹中的目录结构。 问题只发生在冰淇淋三明治(我猜的已知问题) ! 我已经尝试过的东西: 硬件加速closures(开/关并不重要,两者都testing) 2。 WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); settings.setSupportMultipleWindows(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setLoadsImagesAutomatically(true); settings.setDomStorageEnabled(true); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); settings.setSaveFormData(true); settings.setAllowFileAccess(true); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ settings.setAllowContentAccess(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { settings.setAllowFileAccessFromFileURLs(true); settings.setAllowUniversalAccessFromFileURLs(true); } } settings.setAppCacheEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); […]

如何从WebView中检索HTML内容(作为string)

如何检索当前显示在WebView中的所有HTML内容? 我发现WebView.loadData()但我找不到相反的等价物(如WebView.getData()) 请注意,我有兴趣检索我无法控制的网页的数据(即我不能注入一个JavaScript函数到这些页面,以便它将在WebView中调用一个Javascript接口)。

android:webview里面的对话框或popup

如何在对话框或popup窗口中添加Web视图。 我的web视图保持URL WebView.loadurl()。当视图添加到对话框里,它仍然移动到浏览器。 我一直在android中加载webview的对话框,但没有例子,如何做到这一点? 谢谢

Android – 在webview中login后提取cookie

我有一个应用程序,在web视图中打开一个url,用户必须通过webviewlogin到网站,并在login后收到一个cookie。login后,我有问题得到cookie。 问题是,我可以实现这个使用android.webkit.CookieManager,并输出所有的cookie在一个单一的string。 但是,我想实现它使用cookie存储(如在java.net.CookieStore),所以我需要使用java.net.CookieManager。 我在WebViewClient的onPageFinished()中使用下面的代码。 我知道问题是打开一个新的连接,我需要从当前页面获取内容。 我会感谢一些帮助,谢谢 @Override public void onPageFinished(WebView view, String url){ Log.d(TAG, "Finished loading: " + url); CookieSyncManager syncManager = CookieSyncManager.createInstance(Main.this); syncManager.sync(); CookieManager manager = new CookieManager(); manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(manager); try { URL blah = new URL(url); HttpURLConnection con = (HttpURLConnection) blah.openConnection(); readStream(con.getInputStream()); // outputting html } catch (Exception e) { } CookieStore cookieJar […]

将Android资源加载到WebView中

我有一个Android应用程序,显示一本漫画书。 为了使用内置的缩放控件,我正在像这样在WebView加载图片: webView.loadUrl("file:///android_asset/page1.jpg"); 这是工作得很好,但是,因为图像是在资产文件夹,他们没有被压缩,这使得我的.apk巨大。 我想知道如何引用资源文件(从res/drawable文件夹)与文件path像我上面做的资产。 有谁知道这条路是什么样子的? 我尝试过像"file:///res/drawable/pagetitle.jpg"这样的东西,但没有成功。 谢谢您的帮助。 更新: 我发现"file:///android_res/drawable/page1.jpg"是我正在寻找的path。

我怎么知道我的WebView被加载100%?

我试图在我的WebView中加载一些包含JavaScript的HTML代码。 现在,我想testing我的WebView是否在5次之前加载。 我已经尝试了方法getProgress() ,但有时我得到的进展是100,但我的Webview没有加载。 有另一种方法来确保我的Webview被加载100%吗? 这是我的代码的一部分: sdk.getWebView().loadDataWithBaseURL("notreal/", data_html,MIME_TYPE,ENCODING_UTF_8,null); Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run(){ Log.i("TAG", "progress fin = "+sdk.getWebView().getProgress()); if(sdk.getWebView().getProgress() <100){ //cancel the webView sdk.getContext().runOnUiThread(new Runnable() { @Override public void run() { sdk.getImgView().setVisibility(View.VISIBLE); sdk.getWebView().setVisibility(View.GONE); } }); } // else ,the Webview is loaded else{ //prepare webview […]

WebView在执行onReceivedSslError时避免来自Google play的安全警报

我有一个链接,将在web视图中打开。 问题是它不能打开,直到我重写onReceivedSslError像这样: @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } 我从谷歌播放安全警报说: 安全警报您的应用程序具有WebViewClient.onReceivedSslError处理程序的不安全实现。 具体来说,该实施忽略了所有的SSL证书validation错误,使您的应用程序容易受到中间人攻击。 攻击者可以更改受影响的WebView的内容,读取传输的数据(如login凭据),并使用JavaScript在应用程序内部执行代码。 为了正确处理SSL证书validation,只要服务器提供的证书满足您的期望,请更改您的代码以调用SslErrorHandler.proceed(),否则请调用SslErrorHandler.cancel()。 包含受影响的应用程序和类的电子邮件警报已发送到您的开发者帐户地址。 请尽快解决此漏洞,并增加升级APK的版本号。 有关SSLerror handling程序的更多信息,请参阅开发人员帮助中心的文档。 对于其他技术问题,您可以发布到https://www.stackoverflow.com/questions并使用标签“android-security”和“SslErrorHandler”。如果您使用的是负责此的第三方库,请通知第三方,并与他们一起解决这个问题。 要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五个小时后再回来查看。 如果应用程序未正确升级,我们将显示警告。 请注意,虽然这些特定问题可能不会影响使用WebView SSL的每个应用,但最好在所有安全补丁上保持最新状态。 存在漏洞的应用程序可能会被视为危险产品,违反了内容政策和开发者分发协议第4.4节的规定。 请确保所有已发布的应用都符合开发者分发协议和内容政策。 如果您有任何问题或疑虑,请通过Google Play开发人员帮助中心与我们的支持小组联系。 如果我删除onReceivedSslError (handler.proceed()) ,那么页面将不会打开。 无论如何,我可以打开页面的web视图,并避免安全警报。

Android – 防止WebView重新加载旋转

当我旋转我的屏幕时,WebView重新加载整个页面。 我不能有这个,因为我的一些内容包含dynamic/随机材料。 当前旋转时,屏幕将从loadUrl()方法重新加载原始URL。 任何想法我的代码有什么问题? MainActivity.java package com.mark.myapp; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { WebView web; String webURL = "http://www.google.co.uk/"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) ((WebView)findViewById(R.id.web)).restoreState(savedInstanceState); web = (WebView) findViewById(R.id.web); web.getSettings().setJavaScriptEnabled(true); web.loadUrl(webURL); web.setPadding(0, 0, 0, […]

m_mainFrame-> editor() – > hasComposition不是问题

在我的应用程序中,我已经在android webview中加载MVC页面。 MVC页面有两个用户名和密码的文本编辑器。 虽然重点放在文本框,我得到的警告: m_mainFrame->editor()->hasComposition not 。 为什么我得到这个警告? 注意 :将android从2.1升级到2.3.6后出现此错误 日志: 08-21 12:10:21.269: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:21.669: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:21.699: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:21.709: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:22.169: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:22.199: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:22.209: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:22.239: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition not 08-21 12:10:22.259: D/CONTEXT(2928): m_mainFrame->editor()->hasComposition […]