标签: webviewclient

如果在超时回调中修改"window.location.href",则不执行shouldOverrideUrlLoading(...)

我有一个javascript函数'gotoMainPage()'

function gotoMainPage( ) {
    window.location.href = "main/main.do";
}
Run Code Online (Sandbox Code Playgroud)


现在,shouldOverrideUrlLoading(..)如果gotoMainPage( )由于"直接用户交互"而执行,则会调用WebViewClient ,例如用户单击此div:
<div.... onclick='gotoMainPage();'/>

但是,如果通过setTimeout( gotoMainPage, 100 );或通过XMLHttpRequest回调执行,shouldOverrideUrlLoading(..)则永远不会调用,但请求的页面会被加载到webview.

我错过了一个明显的解释还是这个错误?

任何人?

android webview webviewclient

5
推荐指数
2
解决办法
9004
查看次数

我如何使用DownloadListener?

我正在创建一个应用程序,允许大学生从应用程序而不是浏览器下载他们的学习材料.主页有很多主题名称.每个主题名称都会导致新的网页.所以,我用过WebViewClient.但是,在最后一页,当我点击*.ppt或*.pdf文件时,它会打开垃圾.

我希望在应用程序中下载这些文件.

我该如何实施 DownloadListener

package jiit.app;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class sm extends Activity
{  
    WebView browser;

    protected void onCreate(Bundle anyvar) 
    {
        super.onCreate(anyvar);
        setContentView(R.layout.sm);
        browser=(WebView)findViewById(R.id.webkit);
        WebSettings webSettings = browser.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        browser.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
        browser.setWebViewClient(new WebViewClient());
        {
            browser.loadUrl("http://www.sm.ividhya.com/j128/");
        }  
    }
}
Run Code Online (Sandbox Code Playgroud)

android webviewclient webclient-download

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

proguard警告库类android.webkit.WebView依赖于程序类android.webkit.WebViewClien

我在我的应用程序源目录中有一个文件android.webkit.WebViewClient的版本,以便在我自己的WebViewClient扩展版本中处理onReceivedSslError.当我在sdk-7中使用新的ProGuard集成时,我收到以下警告:

[proguard]警告:库类android.webkit.WebView依赖于程序类android.webkit.WebViewClient

...

[proguard]警告:根据程序类,有1个库类实例.[proguard]你必须避免这种依赖,因为程序类将[proguard]被处理,而库类将保持不变.

谁能告诉我如何在proguard.cfg中解决这个问题?谢谢 :)

android proguard webviewclient

5
推荐指数
1
解决办法
9737
查看次数

Android - 检查请求是GET还是POST

我需要在我的Android应用程序中检查请求是否是POST或者在shouldInterceptRequest中的GET.见下面的代码:

public class CustomWebViewClient extends WebViewClient {

    ...

    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        if ("request is POST")
            Log.d("CustomWebViewClient", "request is a POST");
        else if ("request is GET")
            Log.d("CustomWebViewClient", "request is a GET");

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能在WebViewClient的范围内确定这一点?

post android get request webviewclient

5
推荐指数
1
解决办法
1755
查看次数

从webview INPUT字段上传相机照片和filechooser

我的应用程序是基于网络的,我需要从INPUT野外营地上传图片.我有两种情况,因为我不知道另一种方法,根据页面我选择一个或另一个"boolean boolFileChoser"取决于其URL请求:

一个.文件选择器

湾 相机拍照.

我已经处理了文件选择器并且它完美地上传了文件,问题在于相机.一旦我尝试上传相机图片,它就会崩溃.据我所知,因为URI.

a)文件选择器:content:// media/external/images/1234

b)相机拍摄:file:///mnt/sdcard/Pic.jpg

我发现没有办法改变它.

见更新

它现在崩溃,因为尝试上传"content:// media/external/images/1234"时出现nullpointerexception.(仅限相机,不是文件选择器.).此外,如果选择器/摄像机关闭(后退按钮),我将无法再次呼叫它.

案例a)和b)100%工作,这是工作代码,包括我如何知道fileChooser或相机是否被调用:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (resultCode != RESULT_OK) {
    /** fixed code **/
            //To be able to use the filechooser again in case of error
            mUploadMessage.onReceiveValue(null);
    /** fixed code **/
            return;
    }
    if (mUploadMessage==null) {
        Log.d("androidruntime","no mUploadMessage");
        return;
    }
    if (requestCode == FILECHOOSER_RESULTCODE) {
        Uri selectedImage= intent == null || resultCode != RESULT_OK ? null : intent.getData();
        Log.d("androidruntime","url: "+selectedImage.toString()); …
Run Code Online (Sandbox Code Playgroud)

android filechooser webviewclient android-camera

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

从已下载的WebView获取资源

我有一个加载外部网页的webview.我想实现一个自定义缓存机制,因此不需要再次下载css,js和images等资源.我已经尝试过这两种方法:

  • 覆盖shouldInterceptRequestWebViewClient 的方法

这样我就可以将我的本地资源提供给webview.无法获取webview下载的资源.方法结束后发生真正的下载.根据文档,仅在此方法返回时才下载资源null.

  • 覆盖onLoadResourceWebViewClient 的方法

这样我只能获取已加载资源的URL,仅此而已......

谢谢您的帮助!

java android android-webview webviewclient

5
推荐指数
0
解决办法
296
查看次数

Android-WebView的onReceivedHttpAuthRequest()不再被调用

我正在使用基于webview的应用程序,我在webview中呈现URL.Url具有HTTP身份验证.

当我第一次启动url时,会调用onReceivedHttpAuthRequest()并显示一个对话框,供用户输入身份验证凭据,即auth用户名和密码.

@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
        final WebView mView = view;
        final HttpAuthHandler mHandler = handler;

        final EditText usernameInput = new EditText(mActivity);
        usernameInput.setHint("Username");

        final EditText passwordInput = new EditText(mActivity);
        passwordInput.setHint("Password");
        passwordInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

        LinearLayout ll = new LinearLayout(mActivity);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.addView(usernameInput);
        ll.addView(passwordInput);

        Builder authDialog = new AlertDialog
                .Builder(mActivity)
                .setTitle("Authentication")
                .setView(ll)
                .setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        mHandler.proceed(usernameInput.getText().toString(), passwordInput.getText().toString());
                        dialog.dismiss();
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void …
Run Code Online (Sandbox Code Playgroud)

android basic-authentication webview android-webview webviewclient

5
推荐指数
1
解决办法
4944
查看次数

如何从webViewClient.shouldInterceptRequest()返回Http错误响应?

我已经重写public WebResourceResponse shouldInterceptRequest(WebView webView, String url),它应该根据Ajax功能的请求返回自定义响应。但是看起来WebResourceResponse只包含响应体。我如何传递像这样的HTTP响应:

HTTP/1.1 202
Cache-Control: no-cache
Custom-param: param
Run Code Online (Sandbox Code Playgroud)

给我WebView

ajax android webview http-headers webviewclient

5
推荐指数
1
解决办法
819
查看次数

当targetSdkVersion为19时,Android WebViewClient onLoadResource()在onPageFinished()之后调用agian

我已经定义了一个扩展WebViewClient的CustomWebViewClient类,并简单地覆盖onLoadResource()和onPageFinished()来控制进度条的可见性,如下所示:

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    this.progressBar.setVisibility(View.INVISIBLE);
}

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
    this.progressBar.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)

当AndroidManifest.xml中的targetSdkVersion为17时,这些都可以正常工作.但是在我将它设置为android:targetSdkVersion ="19"之后,进度条永远可见,并且我发现在调用onPageFinished()之后再次调用onLoadResource().

这里出了什么问题?

android webviewclient

5
推荐指数
0
解决办法
1479
查看次数

如何从WebView获取WebviewClient实例而不在Android中的API 26上?

我正在为Android开发SDK。作为此SDK的一部分,我需要将自己的应用程序设置WebViewClientWebViewWebView 和SDK集成在一起的应用程序的(而不是我的SDK的一部分)。

因此,WebView可能已经使用设置了它WebViewClient,在这种情况下,我需要WebViewClientWebView我自己的集合中获取此实例,WebViewClient并将其回调方法转发WebViewCleint给开发人员设置的最初配置的方法该应用程序。

我注意到从API V26开始,该类有一个getWebViewClient方法WebView。但显然,我也在寻找在以前的版本中执行此操作的方法。也许有一些使用支持库的方法吗?

有人知道如何在旧版本的WebView中获取集合WebViewClient的实例吗?使用反射或任何其他方法?

android webview webviewclient

5
推荐指数
1
解决办法
1104
查看次数