标签: webview

使Android WebView不存储cookie或密码

我使用Android WebView for Twitter OAuth:Twitter要求用户登录并授权应用程序,我检索访问令牌并将其保留在我的应用程序中.

我不需要(也不要)存储用户密码,但WebView会保留Twitter的cookie,并且还会询问用户是否要记住密码.因此,即使在通过他的Twitter帐户页面取消授权应用程序并且我的应用程序销毁访问令牌之后,下次打开WebView时,它可能仍然登录,即使没有,它也有密码框已经填写.

如何强制WebView不要求记住密码,以及不保留会话cookie?如果那是不可能的,我可以删除它存储的所有状态(图像缓存除外)吗?

passwords cookies android oauth webview

60
推荐指数
4
解决办法
4万
查看次数

JavaScript无法在Android Webview中使用?

我正在尝试制作Android版本的相对简单的iOS应用程序,它使用webview,一些按钮然后依赖于对CMS的javascript调用.

但我很早就陷入了困境:webview无法使用javascript.我已经阅读了很多关于如何在Android webview中启用JS的帖子,但到目前为止还没有运气.

以下是我的一些代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebChromeClient(new WebChromeClient());
    mWebView.setWebViewClient(new HelloWebViewClient()
    {
        @Override  
        public void onPageFinished(WebView view, String url)  
        {  
            //Calling an init method that tells the website, we're ready 
            mWebView.loadUrl("javascript:m2Init()");
            page1(mWebView);
        }  
    });
  mWebView.loadUrl("http://my_url/mobile/iphone//app.php");  
}

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack(); …
Run Code Online (Sandbox Code Playgroud)

javascript android webview

60
推荐指数
6
解决办法
6万
查看次数

在OS X中为每个WebView分隔cookie jar

我一直在努力实现在macOS中每个WebView拥有一个独特(不共享)cookie jar的目标(Cookie管理在iOS中的工作方式不同).

在阅读了大量StackOverflow问题并深入研究文档后,我在这些文章中找到了最接近我问题的解决方案:

我已经使用它们设置了一个示例应用程序:https://github.com/jjconti/swift-webview-isolated

基本思想是从WebResourceLoadDelegate和WebPolicyDelegate协议实现必要的方法,并使用BSHTTPCookieStorage存储和检索cookie.此外,我的示例应用程序允许保存cookieStorage对象,以便在将来的执行中重新加载它.

不幸的是,该应用程序在每个网站都无法正常工作(文章的作者针对的是某个特定的网站).例如Gmail和NewRelic,您在登录后(或执行某些操作后)立即注销.这让我怀疑cookie存储实现中的一个错误,我还没有找到.

有人能告诉我是否有什么东西我不见了?

cookies macos cocoa webview

60
推荐指数
1
解决办法
1542
查看次数

如何在android中加载url到webview时显示进度?

我正在加载网址到webview:

WebView webview=(WebView)findViewById(R.id.webview); 
webview.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)

加载网址需要一些时间,在此期间显示空白屏幕.我想在加载网址时显示进度对话框:

ProgressDialog dialog = ProgressDialog.show(this, "HI","Loading......", true);
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码是行不通的.如果有任何想法,请帮助.提前致谢.

android webview

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

检查Android WebView是否正在使用触摸事件

精简版

如何检测Android WebView是否消耗了触摸事件?onTouchEvent始终返回true和WebViewClientonUnhandledInputEvent永远不会触发.

详细版本

我在TwoDScrollView中有多个WebView.顾名思义,TwoDScrollView可以垂直和水平滚动.TwoDScrollView的内容可以放大/缩小.当用户拖动手指或使用双指缩放时,我想将触摸事件发送到:

  • WebView,如果其内容可滚动/可缩放(即只有WebView内部将滚动/缩放)
  • 如果上述条件为false,则为TwoDScrollView(TwoDScrollView的所有内容都将滚动/缩放)

我通过使用canScrollHorizontallycanScrollVertically方法部分实现了这一点.但这些方法仅适用于"原生滚动".但是,在某些情况下,WebView中的某些JavaScript会消耗触摸事件,例如Google Maps.在这种情况下,方法返回false.有没有办法找出WebView的内容是否消耗触摸事件,即可滚动/可缩放?我无法更改WebView的内容,因此我的问题与不同.

我已经考虑通过evaluateJavaScript方法在Webview中执行一些JavaScript来检查触摸处理程序,但根据这个答案,没有简单的方法来实现这一点,并且页面也可以有一些其他嵌套的iframe.任何帮助将不胜感激.

我已经尝试过的

  1. 无论如何,我都会覆盖WebView onTouchEvent并读取super.onTouchEvent()哪些内容始终返回true.
  2. canScrollHorizontallycanScrollVertically如上所述,只能部分解决这个问题
  3. onScrollChanged 也没用
  4. WebViewClient.onUnhandledInputEvent 永远不会被触发
  5. 我考虑过使用JavaScript evaluateJavaScript,但这是一个非常复杂和丑陋的解决方案
  6. 我试图跟踪MotionEvent Debug.startMethodTracing.我发现它传播如下:
    • android.webkit.WebView.onTouchEvent
    • com.android.webview.chromium.WebViewChromium.onTouchEvent
    • com.android.org.chromium.android_webview.AwContents.onTouchEvent
    • com.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onTouchEvent
    • com.android.org.chromium.content.browser.ContentViewCore.onTouchEventImpl
    • 根据ContentViewCore的源代码,触摸事件以本机方式结束nativeOnTouchEvent,我不知道它会发生什么.无论如何,onTouchEvent总是返回true,即使有可能在某处发现事件是否被消耗,它也需要使用非常丑陋的私有方法.

注意

我不需要知道如何拦截发送到WebView的触摸事件,但WebView是否正在使用它们,即是否正在使用它们执行任何操作,例如滚动,拖动等.

android webview

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

如何使用WebView自定义字体

现在我想显示一些unicode字符,我使用了tag : <font face=" Arial">something here</font>. 但似乎WebView找不到Arial字体,因为我只能看到UFO字符.我是否必须将arial.ttf复制到某处或者如何使用此TrueType字体WebView?谢谢.

android webview custom-font

58
推荐指数
3
解决办法
6万
查看次数

Android Webview:"未捕获的TypeError:无法读取null的属性'getItem'"

我正在创建一个简单的Android应用程序,它有一个webview,应该显示一个网址.当我将网址添加为google.com或facebook.com时,它会正确加载,但是当我提供我的网址(qbo.intuit.com)时,它不会加载并提供"未捕获的TypeError:无法读取属性'getItem'的null "错误.我在这里粘贴我的代码.我使用的是Compile sdk版本:API 22:Android 5.1(Lollipop),版本 - Android Studio 1.4,内部版本号:AI-141.2288178,Android SDK工具:24.4.0,jdk1.7.0_80.存在类似的问题,但它对我没有帮助.请帮助我是android的新手.MainActivity.java

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

    String url= "https://qbo.intuit.com/";
    WebView view= (WebView) this.findViewById(R.id.webView);

     final WebViewClient client = new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }

    };

        WebSettings settings = view.getSettings();
        settings.setJavaScriptEnabled(true);
    view.setWebViewClient(client);
        view.loadUrl(url);


}
Run Code Online (Sandbox Code Playgroud)

AndriodManifest.xml

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

android webview

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

在WebView中点击表单字段不显示软键盘

我创建了自己的WebView并设置了WebChromeClient和WebViewClient对象.当我启动此WebView时,HTML表单字段在我触摸它们时会产生反应(光标出现),但它们不会被选中,软键盘也不会启动.如果我使用轨迹球选择表格并按下它,键盘就会出现.

我试着打电话给myWebview.requestFocusFromTouch()这个答案建议,但它返回false,并没有帮助.

android webview

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

Android webview中隐藏在键盘下方的文本框

我创建了一个简单的iPhone/Android应用程序,包含一个普通的webview.此webview调用我的网站.

在我的网站上有几种输入类型= text或textarea的表单.当它们位于页面底部时,我遇到了问题!

1)在我的iPhone应用程序中,键盘将自动出现并将文本框推送到手机屏幕的可见区域.所以没有什么可做的.

2)但是在我的Android应用程序中,文本框将保持在同一个位置,并最终被我的键盘隐藏.所以用户唯一的选择是输入"盲".

我怎样才能解决这个问题?有没有其他人遇到这个问题?

keyboard hidden android textbox webview

54
推荐指数
4
解决办法
4万
查看次数

Android - webview中的本地图像

我正在尝试在我的webview中显示本地图像:

 String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>";
 webview.loadData(data, "text/html", "UTF-8");
Run Code Online (Sandbox Code Playgroud)

此代码不显示任何内容,而是:

 webview.loadUrl("file:///android_asset/large_image.jpg");
Run Code Online (Sandbox Code Playgroud)

这个工作,但我需要有复杂的网页,而不仅仅是一张图片.

有任何想法吗 ?

android image webview android-webview

53
推荐指数
4
解决办法
9万
查看次数