标签: android-webview

从BackStack保留ViewPager中的Fragment时重新加载WebView

这是一个Fragment包含a 的基本代码WebView.
WebFragment.java

public class WebFragment extends Fragment {
String TAG = "WebFragment";
private WebView webView;
private String currentUrl = "http://www.google.com";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.webview_layout, null);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    webView = (WebView) getView().findViewById(R.id.helloWebview);
    initWebView();
    webView.loadUrl(currentUrl);
}

@SuppressLint("SetJavaScriptEnabled")
private void initWebView() {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new JavaScriptInterface(), "HTMLOUT");
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            Log.e(TAG, "Loding...");
            super.onPageStarted(view, url, favicon); …
Run Code Online (Sandbox Code Playgroud)

android android-webview android-fragments android-viewpager back-stack

21
推荐指数
2
解决办法
7635
查看次数

PostMessage API可以用于与Android WebView进行通信吗?

我通常使用HTML5 PostMessage API将iframed内容中的信息传递给父框架.最近我在Android WebView中使用了我的内容(据我所知,这是iframe的原生Android相当).本机应用程序是否有办法监听我发送给他们的PostMessage事件?

我知道addJavascriptInterface存在,我只是希望有一种方法可以重用我现有的PostMessage代码,而无需编写新的东西.

javascript android postmessage android-webview

21
推荐指数
5
解决办法
8862
查看次数

从WebView打开softinput时,Android窗口不会调整大小/平移

我的问题是如下.

  1. 应用程序使用主题android:Theme.NoTitleBar.Fullscreen,只有一个Activity,所有其他视图都是Fragment
  2. WebView里面ViewPager Fragment有里面的东西ScrollView
  3. HTML内容包含输入字段
  4. 我点击底部的输入字段 WebView
  5. 软输入打开,但未Window调整大小/平移

我已经尝试过设置android:windowSoftInputMode="adjustResize"或者android:windowSoftInputMode="adjustPan"在我的清单中Activity.还尝试在java中设置其中一个.

我的应用程序中的正常EditText内部ScrollView确实正确调整平移,以便用户可以看到他/她正在键入的位置.

更新:

如果没有工作解决方案来调整窗口,有没有办法WebView认为它的内容就像半屏高度更大,所以用户至少可以滚动输入可见.

android android-webview android-fragments

21
推荐指数
1
解决办法
1万
查看次数

java.io.IOException的WebView崩溃:关闭失败:EIO(I/O错误)libcore.io.IoUtils.close(IoUtils.java:41)

我在Android 4.0/4.1上有用户上传崩溃日志,但我无法重现它.日志是这样的:

java.io.IOException: close failed: EIO (I/O error)
libcore.io.IoUtils.close(IoUtils.java:41)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
cause by:
libcore.io.ErrnoException: close failed: EIO (I/O error)
libcore.io.Posix.close(Native Method)
libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
libcore.io.IoUtils.close(IoUtils.java:38)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
Run Code Online (Sandbox Code Playgroud)

有谁知道它是如何发生的?或者如何解决它?

android android-webview webviewclient

21
推荐指数
1
解决办法
1208
查看次数

当我的活动不可见时,如何在Android WebView中暂停Flash内容?

我正在尝试使用WebView在我的活动中显示Flash内容.一切都运行得很好,但是当用户点击主页键将活动放入后台时,Flash内容会继续运行(声音继续播放等)

我注意到Android浏览器和Dolphin浏览器似乎都避免了这个问题,并且当浏览活动放到后台时正确暂停Flash内容.

理想情况下,我想要一个解决方案,如果活动正在完成,则完全杀死WebView,但是暂停它(基本上复制浏览器的默认行为)

这是一个简单的测试,我把它放在Kongregate上加载一个有一些背景音乐的游戏:

    public class BrowserTest extends Activity {
    private WebView mWebView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            mWebView = new WebView(this);
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setPluginsEnabled(true);

            mWebView.loadUrl("http://m.kongregate.com/games/Jiggmin/the-game-of-disorientation-mobile");
            setContentView(mWebView);
        }

        @Override
        protected void onPause(){
            super.onPause();

            mWebView.pauseTimers();
            if(isFinishing()){
                mWebView.loadUrl("about:blank");
                setContentView(new FrameLayout(this));
            }
        }

        @Override
        protected void onResume(){
            super.onResume();
            mWebView.resumeTimers();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我看了一下股票浏览器的最新来源,似乎做了类似的事情(调用pauseTimers/resumeTimers),虽然我担心我一直在看的代码已经过时了,因为它调用的函数是don似乎不再存在了.

我确实通过使用更新计数器的简单JavaScript setInterval进行测试来验证对pauseTimers的调用是否正常.对于Window或View管理,我应该尝试一些其他明显的东西吗?

移动Flash播放器的文档说:

Flash Player还将自动暂停不在视图或前台应用程序中的SWF播放,例如在收到呼叫或警报响起时,以降低CPU利用率,电池使用率和内存使用率.

这似乎在股票浏览器和Dolphin浏览器中都很完美,但在我的应用程序中却没有.任何想法/解决方案将不胜感激!

更新:这是我们最终添加到我们的活动以使其工作的功能.我们在活动的onPause函数中使用"onPause",在activity的onResume函数中使用"onResume"调用它:

private void callHiddenWebViewMethod(String name){
    if( mWebView != null ){
        try {
            Method method = WebView.class.getMethod(name);
            method.invoke(mWebView);
        } catch (NoSuchMethodException e) {
            Log.error("No …
Run Code Online (Sandbox Code Playgroud)

android android-webview android-2.2-froyo

20
推荐指数
2
解决办法
1万
查看次数

使用android中的webview在缓存中保存网页

我正在开发一个应用程序,我在webview中加载了几个网站,现在我想保存网页,所以一段时间后即使没有互联网用户也能看到这些页面.但我对如何在缓存或任何其他媒体中保存整个网页感到困惑.最重要的是,即使没有互联网,我们也需要显示页面.有没有人以前实现过这个.请提供一些演示代码,因为这是我第一次尝试缓存.

谢谢

android caching android-webview

20
推荐指数
1
解决办法
3万
查看次数

Android嵌入式HTML5视频

我的文件系统中有一个嵌入式html文件,如果我拖放文件,它可以正常工作

资产/ index.html的

从这里测试了HTML5视频播放.工作良好.

现在,如果我想显示一个带有HTML5视频的嵌入式页面[在浏览器上工作]作为嵌入式文件,只需更改HTML5 android webView播放器的示例代码并拖放该项目的资产中的index.html即可不起作用,应用程序崩溃与此错误:

抱歉,app*意外停止了......

所以我只是改变

mWebView.loadUrl("http://freebsd.csie.nctu.edu.tw/~freedom/html5/");
Run Code Online (Sandbox Code Playgroud)

mWebView.loadUrl("file:///android_asset/index.html");
Run Code Online (Sandbox Code Playgroud)

它不起作用.

我缺少什么,是否有嵌入HTML5视频的基本示例?

video html5 android android-webview

20
推荐指数
1
解决办法
1716
查看次数

Android,webview用户代理与浏览器用户代理

我正在构建我的网站,我想知道用户是使用Android的浏览器还是使用带有webview的应用程序.

可能吗 ??

user-agent android android-webview

20
推荐指数
3
解决办法
5万
查看次数

Android WebView:仅显示网站的某些部分

我想知道是否可以在WebView中仅显示网站的某些部分.例如,我有这个网站与以下HTML:

<html>
 <body>
<div id="1">ID 1</id>
<div id="2">ID 2</id>
<div id="3">ID 3</id>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

可以仅在WebView中显示,例如,id ="3"的div的内容?我的代码是WebWiew:

WebViewClient WebClient = new WebViewClient(){
        public boolean shouldOverrideUrlLoading(WebView view, String url){
          view.loadUrl(url);
          return true;
        }
    };


    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setBuiltInZoomControls(true);
    myWebView.getSettings().setBuiltInZoomControls(true);
    myWebView.setWebViewClient(WebClient);
    myWebView.loadUrl("https://www.example.com");
Run Code Online (Sandbox Code Playgroud)

java android android-webview

20
推荐指数
1
解决办法
2万
查看次数

提交表单按钮在WebView上不起作用

在WebView中加载某些网站时,我无法提交表单.单击提交输入(按钮)时,它会聚焦,但不会发生任何其他情况.

这些相同的网站适用于Chrome(在同一设备中).

我怎样才能解决这个问题?我缺少一个设置吗?

关于这个问题发生的原因的反馈也将受到赞赏.


重现步骤

  1. 加载将加载的BrowseActivityhttps://m.ebay.com/
  2. 页面加载后,输入搜索查询(例如"笔记本电脑")
  3. 按表格的蓝色搜索按钮或软键盘的操作按钮(放大镜玻璃图标)

预期行为:应提交搜索表单并显示搜索结果

实际行为:蓝色搜索按钮获得焦点(由明亮的边框表示),但没有其他任何事情发生.


BrowseActivity.java

public class BrowseActivity extends AppCompatActivity {

    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_browse);

        mWebView = (WebView) findViewById(R.id.home_wv_content);
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.getSettings().setJavaScriptEnabled(true);

        // Ebay has a blue search button where this issue can be replicated
        mWebView.loadUrl("https://m.ebay.com");
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_browse.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="my.example.BrowseActivity">

    <WebView
        android:id="@+id/home_wv_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

编辑:

我考虑过使用自定义JavaScript界面来捕获按钮上的点击,阅读输入查询然后重定向到搜索页面.

无论如何,这种方法与网站本身紧密耦合(例如ebay),我希望这可以与不同的网站一起使用.此外,我不希望网站上的更改破坏我的应用程序.

android android-webview

20
推荐指数
1
解决办法
7262
查看次数