WebView未在Android 4.4+;
我对WebView未在Android 4.4+;,android,cookies,webview,android-webview,Android,Cookies,Webview,Android Webview,我对WebView有一个问题,一个链接只是加载到WebView中,但它不起作用 相同的URL在安卓操作系统的4.1、4.2、4.2.2和4.3版本中运行良好,但在4.4及以上版本中不起作用 Url是 这意味着它在Kitkat、棒棒糖或棉花糖中不起作用 我认为这是一个cookies问题,但我已在WebView中启用cookies,但无法解决此问题 同一个URL在Chrome和另一个浏览器中工作得很好,但它没有在默认WebView中加载 如果有人有解决办法,请告诉我 这是我的密码: package
WebView
有一个问题,一个链接只是加载到WebView
中,但它不起作用
相同的URL
在安卓操作系统的4.1、4.2、4.2.2和4.3版本中运行良好,但在4.4及以上版本中不起作用
Url
是
这意味着它在Kitkat、棒棒糖或棉花糖中不起作用
我认为这是一个cookies问题,但我已在WebView
中启用cookies,但无法解决此问题
同一个URL
在Chrome和另一个浏览器中工作得很好,但它没有在默认WebView
中加载
如果有人有解决办法,请告诉我
这是我的密码:
package com.avm.ui;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.avm.uc.CustAnimatedActivity;
import com.avm.uc.CustomProgressBarDialog;
import com.avm.uc.Header;
import com.avm.util.Config;
import com.avm.util.Pref;
import com.avm.util.Utils;
import com.esp.therisemethod.R;
public class EvaluateYourSelfEsteemActivity extends CustAnimatedActivity {
/* Declaration of variable here */
private Header header;
private WebView webView;
private CustomProgressBarDialog mProgressDialog;
private int flag;
private DefaultHttpClient httpClient;
public static Cookie cookie = null;
// Flag 1=for EvaluateYourSelfEsteem
// Flag 2=for Faq
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_common_webview);
flag = getIntent().getIntExtra("FLAG", 0);
Utils.addActivities(EvaluateYourSelfEsteemActivity.this);
/* fetch object resource here */
header = (Header) findViewById(R.id.header);
/* setValue in Header */
if (flag == 1) {
header.txtTitle.setText(getResources().getString(
R.string.RATE_YOUR_SELF_ESTEEM));
} else if (flag == 2) {
header.txtTitle.setText(getResources().getString(R.string.FAQs));
} else if (flag == 3) {
header.txtTitle.setText(getResources().getString(
R.string.PREMIUM_ACCOUNT));
}
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.clearHistory();
webView.clearView();
WebSettings settings = webView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccess(true);
settings.setLoadWithOverviewMode(true);
settings.setPluginState(PluginState.ON);
settings.setRenderPriority(RenderPriority.HIGH);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setDisplayZoomControls(false);
settings.setUseWideViewPort(false);
if (Build.VERSION.SDK_INT >= 21) {
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptThirdPartyCookies(webView, true);
cookieManager.setAcceptCookie(true);
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
}
webView.setBackgroundColor(Color.TRANSPARENT);
if (Utils.isTablet(EvaluateYourSelfEsteemActivity.this))
settings.setTextSize(WebSettings.TextSize.LARGER);
else
settings.setTextSize(WebSettings.TextSize.NORMAL);
/** set background layer */
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
}
if (flag == 1) {
webView.loadUrl("http://www.riseselfesteem.com/test/");
} else if (flag == 2) {
webView.loadUrl("http://192.168.1.42/work/rise/faqs/mobilefaq");
// webView.loadUrl("http://rise.esprit-apps.com/faqs/mobilefaq");
} else if (flag == 3) {
webView.loadUrl("http://192.168.1.42/work/rise/payments/mobilepay/"
+ Pref.getValue(EvaluateYourSelfEsteemActivity.this,
Config.PREF_USERID, "0"));
}
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if (mProgressDialog == null) {
mProgressDialog = new CustomProgressBarDialog(
EvaluateYourSelfEsteemActivity.this);
mProgressDialog.setCancelable(true);
mProgressDialog.show();
}
}
// load URL
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("http://www.riseselfesteem.com/video")) {
view.stopLoading();
startAnimatedActivity(new Intent(
EvaluateYourSelfEsteemActivity.this,
AboutUsActivity.class),
CustAnimatedActivity.SLIDE_FROM_RIGHT);
return false;
} else if (url
.equals("http://192.168.1.42/work/rise/contact?mobilecontact")) {
view.stopLoading();
startAnimatedActivity(new Intent(
EvaluateYourSelfEsteemActivity.this,
ContectUsActivity.class),
CustAnimatedActivity.SLIDE_FROM_RIGHT);
return false;
} else if (url.equals("http://paymentfail/")) {
view.stopLoading();
finish();
overridePendingTransition(
R.anim.animated_activity_slide_left_in,
R.anim.animated_activity_slide_right_out);
return false;
} else if (url.equals("http://paymentdone/")) {
view.stopLoading();
Pref.setValue(EvaluateYourSelfEsteemActivity.this,
Config.PREF_IS_PAID, "1");
startAnimatedActivity(new Intent(
EvaluateYourSelfEsteemActivity.this,
PremiumAccountSucessActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT),
CustAnimatedActivity.SLIDE_FROM_RIGHT);
finish();
return false;
} else {
view.loadUrl(url);
return true;
}
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
mProgressDialog = null;
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.cancel();
mProgressDialog = null;
}
}
});
super.onCreate(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save the state of the WebView
webView.saveState(outState);
}
// onRestoreInstanceState to restore the instance
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Restore the state of the WebView
webView.restoreState(savedInstanceState);
}
@SuppressWarnings("deprecation")
@Override
public void onDestroy() {
try {
webView.clearView();
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
@Override
protected void onPause() {
if (mProgressDialog != null && mProgressDialog.isShowing())
mProgressDialog.dismiss();
mProgressDialog = null;
super.onPause();
}
@Override
public void onBackPressed() {
if (mProgressDialog != null && mProgressDialog.isShowing())
mProgressDialog.dismiss();
mProgressDialog = null;
super.onBackPressed();
}
}
我在logcat中得到以下错误:
12-31 10:29:11.223: I/art(11886): Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.FloatingSelectActionModeCallback>
12-31 10:29:11.228: I/art(11886): Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.FloatingSelectActionModeCallback>
12-31 10:29:11.246: I/art(11886): Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.WebViewContentsClientAdapter$WebResourceErrorImpl>
12-31 10:29:11.247: I/art(11886): Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.WebViewContentsClientAdapter$WebResourceErrorImpl>
12-31 10:29:11.223:I/art(11886):拒绝对以前失败的类java.lang.class重新初始化
12-31 10:29:11.228:I/art(11886):拒绝在以前失败的类java.lang.class上重新初始化
12-31 10:29:11.246:I/art(11886):拒绝在以前失败的类java.lang.class上重新初始化
12-31 10:29:11.247:I/art(11886):拒绝在以前失败的类java.lang.class上重新初始化
谢谢。请检查在Android 4.4中迁移到WebView Android 4.4(API级别19)引入了基于Chromium的新版本WebView。此更改升级了WebView性能和对HTML5、CSS3和JavaScript的标准支持,以匹配最新的web浏览器。在Android 4.4及更高版本上运行时,任何使用WebView的应用程序都将继承这些升级 参考链接:
希望它能对您有所帮助。请检查在Android 4.4中迁移到WebView Android 4.4(API级别19)引入了基于Chromium的新版本WebView。此更改升级了WebView性能和对HTML5、CSS3和JavaScript的标准支持,以匹配最新的web浏览器。在Android 4.4及更高版本上运行时,任何使用WebView的应用程序都将继承这些升级 参考链接: 希望它能对您有所帮助。请尝试以下代码:
CookieManager cm = CookieManager.getInstance();
cm.setAcceptCookie(true);
应在创建WebView之前执行该命令。请尝试以下代码:
CookieManager cm = CookieManager.getInstance();
cm.setAcceptCookie(true);
它应该在创建WebView之前执行。除非您发布代码,否则我们无法假设出了什么问题。除非您告诉我们什么中断以及调试在哪里停止,否则我们无法知道什么是错误的。有了这么少的信息,这里就没有人能帮你了。@AndiGeeky,等等,我会附加代码,或者你会给我演示项目,在Kitkat,棒棒糖,url上面加载,Marshmallow@Dhaval沙阿:你用过吗?->@达瓦沙:请同时检查->除非你发布代码,否则我们无法假设出了什么问题。除非您告诉我们什么中断以及调试在哪里停止,否则我们无法知道什么是错误的。有了这么少的信息,这里就没有人能帮你了。@AndiGeeky,等等,我会附加代码,或者你会给我演示项目,在Kitkat,棒棒糖,url上面加载,Marshmallow@Dhaval沙阿:你用过吗?->@DhavalShah:Pleasec check Alway->not working it’s give sample error我正在查看nexus 7 Android版本5.1.1我已经提供了我想要加载的示例url请检查我的问题不工作它是give sample error我正在查看nexus 7 Android版本5.1.1我已经提供了我想要加载的示例url请检查我的问题可以吗你能为我提供一个在android webview中laod高于url的示例项目,并使用4.4+版本吗?你能为我提供一个在android webview中laod高于url的示例项目并使用4.4+版本吗?