我使用Android WebView for Twitter OAuth:Twitter要求用户登录并授权应用程序,我检索访问令牌并将其保留在我的应用程序中.
我不需要(也不要)存储用户密码,但WebView会保留Twitter的cookie,并且还会询问用户是否要记住密码.因此,即使在通过他的Twitter帐户页面取消授权应用程序并且我的应用程序销毁访问令牌之后,下次打开WebView时,它可能仍然登录,即使没有,它也有密码框已经填写.
如何强制WebView不要求记住密码,以及不保留会话cookie?如果那是不可能的,我可以删除它存储的所有状态(图像缓存除外)吗?
我正在尝试制作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) 我一直在努力实现在macOS中每个WebView拥有一个独特(不共享)cookie jar的目标(Cookie管理在iOS中的工作方式不同).
在阅读了大量StackOverflow问题并深入研究文档后,我在这些文章中找到了最接近我问题的解决方案:
我已经使用它们设置了一个示例应用程序:https://github.com/jjconti/swift-webview-isolated
基本思想是从WebResourceLoadDelegate和WebPolicyDelegate协议实现必要的方法,并使用BSHTTPCookieStorage存储和检索cookie.此外,我的示例应用程序允许保存cookieStorage对象,以便在将来的执行中重新加载它.
不幸的是,该应用程序在每个网站都无法正常工作(文章的作者针对的是某个特定的网站).例如Gmail和NewRelic,您在登录后(或执行某些操作后)立即注销.这让我怀疑cookie存储实现中的一个错误,我还没有找到.
有人能告诉我是否有什么东西我不见了?
我正在加载网址到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是否消耗了触摸事件?onTouchEvent始终返回true和WebViewClient的onUnhandledInputEvent永远不会触发.
我在TwoDScrollView中有多个WebView.顾名思义,TwoDScrollView可以垂直和水平滚动.TwoDScrollView的内容可以放大/缩小.当用户拖动手指或使用双指缩放时,我想将触摸事件发送到:
我通过使用canScrollHorizontally和canScrollVertically方法部分实现了这一点.但这些方法仅适用于"原生滚动".但是,在某些情况下,WebView中的某些JavaScript会消耗触摸事件,例如Google Maps.在这种情况下,方法返回false.有没有办法找出WebView的内容是否消耗触摸事件,即可滚动/可缩放?我无法更改WebView的内容,因此我的问题与此不同.
我已经考虑通过evaluateJavaScript方法在Webview中执行一些JavaScript来检查触摸处理程序,但根据这个答案,没有简单的方法来实现这一点,并且页面也可以有一些其他嵌套的iframe.任何帮助将不胜感激.
onTouchEvent并读取super.onTouchEvent()哪些内容始终返回true.canScrollHorizontallycanScrollVertically如上所述,只能部分解决这个问题onScrollChanged 也没用WebViewClient.onUnhandledInputEvent 永远不会被触发evaluateJavaScript,但这是一个非常复杂和丑陋的解决方案Debug.startMethodTracing.我发现它传播如下:
android.webkit.WebView.onTouchEventcom.android.webview.chromium.WebViewChromium.onTouchEventcom.android.org.chromium.android_webview.AwContents.onTouchEventcom.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onTouchEventcom.android.org.chromium.content.browser.ContentViewCore.onTouchEventImplnativeOnTouchEvent,我不知道它会发生什么.无论如何,onTouchEvent总是返回true,即使有可能在某处发现事件是否被消耗,它也需要使用非常丑陋的私有方法.我不需要知道如何拦截发送到WebView的触摸事件,但WebView是否正在使用它们,即是否正在使用它们执行任何操作,例如滚动,拖动等.
现在我想显示一些unicode字符,我使用了tag : <font face="
Arial">something here</font>. 但似乎WebView找不到Arial字体,因为我只能看到UFO字符.我是否必须将arial.ttf复制到某处或者如何使用此TrueType字体WebView?谢谢.
我正在创建一个简单的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)
我创建了自己的WebView并设置了WebChromeClient和WebViewClient对象.当我启动此WebView时,HTML表单字段在我触摸它们时会产生反应(光标出现),但它们不会被选中,软键盘也不会启动.如果我使用轨迹球选择表格并按下它,键盘就会出现.
我试着打电话给myWebview.requestFocusFromTouch()为这个答案建议,但它返回false,并没有帮助.
我创建了一个简单的iPhone/Android应用程序,包含一个普通的webview.此webview调用我的网站.
在我的网站上有几种输入类型= text或textarea的表单.当它们位于页面底部时,我遇到了问题!
1)在我的iPhone应用程序中,键盘将自动出现并将文本框推送到手机屏幕的可见区域.所以没有什么可做的.
2)但是在我的Android应用程序中,文本框将保持在同一个位置,并最终被我的键盘隐藏.所以用户唯一的选择是输入"盲".
我怎样才能解决这个问题?有没有其他人遇到这个问题?
我正在尝试在我的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)
这个工作,但我需要有复杂的网页,而不仅仅是一张图片.
有任何想法吗 ?