我有一个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.
我错过了一个明显的解释还是这个错误?
任何人?
我正在创建一个应用程序,允许大学生从应用程序而不是浏览器下载他们的学习材料.主页有很多主题名称.每个主题名称都会导致新的网页.所以,我用过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.webkit.WebViewClient的版本,以便在我自己的WebViewClient扩展版本中处理onReceivedSslError.当我在sdk-7中使用新的ProGuard集成时,我收到以下警告:
[proguard]警告:库类android.webkit.WebView依赖于程序类android.webkit.WebViewClient
...
[proguard]警告:根据程序类,有1个库类实例.[proguard]你必须避免这种依赖,因为程序类将[proguard]被处理,而库类将保持不变.
谁能告诉我如何在proguard.cfg中解决这个问题?谢谢 :)
我需要在我的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的范围内确定这一点?
我的应用程序是基于网络的,我需要从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) 我有一个加载外部网页的webview.我想实现一个自定义缓存机制,因此不需要再次下载css,js和images等资源.我已经尝试过这两种方法:
shouldInterceptRequestWebViewClient 的方法这样我就可以将我的本地资源提供给webview.无法获取webview下载的资源.方法结束后发生真正的下载.根据文档,仅在此方法返回时才下载资源null.
onLoadResourceWebViewClient 的方法这样我只能获取已加载资源的URL,仅此而已......
谢谢您的帮助!
我正在使用基于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
我已经重写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?
我已经定义了一个扩展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开发SDK。作为此SDK的一部分,我需要将自己的应用程序设置WebViewClient为WebView将WebView 和SDK集成在一起的应用程序的(而不是我的SDK的一部分)。
因此,WebView可能已经使用设置了它WebViewClient,在这种情况下,我需要WebViewClient从WebView我自己的集合中获取此实例,WebViewClient并将其回调方法转发WebViewCleint给开发人员设置的最初配置的方法该应用程序。
我注意到从API V26开始,该类有一个getWebViewClient方法WebView。但显然,我也在寻找在以前的版本中执行此操作的方法。也许有一些使用支持库的方法吗?
有人知道如何在旧版本的WebView中获取集合WebViewClient的实例吗?使用反射或任何其他方法?
android ×10
webviewclient ×10
webview ×4
ajax ×1
filechooser ×1
get ×1
http-headers ×1
java ×1
post ×1
proguard ×1
request ×1