【问题标题】:Android WebView prevent page reloadAndroid WebView 防止页面重新加载
【发布时间】:2014-04-16 14:50:17
【问题描述】:

我有一个 Phonegap 打包应用程序,当按下按钮时会打开 PDF 查看器。我是用 FileOpener2 插件做到的。

当我从 PDF 查看器返回应用程序时,结果因 Android 版本而异。

在 Android 4.* 中,应用程序在离开应用程序之前会停留在应有的位置。但是,在 Android 2.3.7 中,WebView 会重新加载应用程序,这是我没想到的。

我已经尝试将 android:launchmode 更改为 singleTask 或 singleInstance,但没有成功。

当我回到 Phonegap 应用程序时,如何避免页面重新加载?

提前致谢!

更新 1

我已经修改了 Cordova 或 Phonegap 类 CordovaWebViewClient,它扩展了 WebViewClient:

@Override
public void onLoadResource(WebView view, String url) {
    if (url.equals("file:///android_asset/www/index.html")) {
        if (this.firstLoad) {
            this.firstLoad = false;
        } else {
            view.stopLoading();
        }
    }

然而,onLoadResource 仅在应用程序启动时被触发,而不是在从另一个应用程序恢复时被触发。

【问题讨论】:

    标签: android cordova webview


    【解决方案1】:

    回答我自己的问题,将以下属性设置为 AndroidManifest 中的唯一活动即可解决问题。但是我必须对其进行测试,因为它可能存在我不知道的问题:

    android:launchMode="singleInstance"
    android:alwaysRetainTaskState="true"
    

    干杯!

    更新

    在测试出现错误后,使用 Phonegap 相机插件在图库中选择一张照片,显示“已取消选择”。

    所以看完https://groups.google.com/forum/#!topic/phonegap/R08vOZNm580我设置:

     android:launchMode="singleTask"
     android:taskAffinity=""
     android:excludeFromRecents="true"
    

    【讨论】:

    • 天哪,你救了我一命。感谢您的解决方案。
    • 那么,如果你设置了LaunchMode,我们是否需要在activity中使用上面的代码'onLoadResource'?
    【解决方案2】:

    在android.webkit.WebViewClient onLoadResource回调中调用WebView的stopLoading

    MyWebViewClient extend WebViewClient {
    
    public void onLoadResource (WebView view, String url) {
        if(your condition ){
             view.stopLoading();
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多