Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I resolve the authentication message that keeps popping up in a webview?
    primarykey
    data
    text
    <p>I have a webview with authentication, in which the authentication message keeps popping up for the webview fragment when called.The authentication popup is the fault code 410 (already signed in: sign in/cancel) message, How do I pass my cookies for the session id to be maintained? Any clues? thanks! P.S: Please explain programmatically with respect to my code wherever possible as it's hard to understand when you explain without code.</p> <p>Here is my code for the given fragment:</p> <pre><code> public class WebViewFragment extends Fragment implements OnClickListener , MainActivity.BackPressListener&lt;Fragment&gt; { private static final String SEARCH_TERM = "search_term"; private static String mSearchTerm; private WebView mWebview; private static WebViewFragment sUserProfileManager; public final static String SYMBOL = "symbol"; public static int PIC_WIDTH = 30; private static final String SYMBOL_TYPE = "symbol_type"; public static final String CONTAINER_ID = "container_id"; public static final String TAG_FRAGMENT_WEBVIEW = "WebViewFragment"; SharedPreferencesManager manager = SharedPreferencesManager.getInstance(); private static String URL; private final String USERNAME = manager.getLoginUsername(); private final String PASSWORD = manager.getDecryptedLoginPassword(); LinearLayout progressBar; private static WebViewFragment __newInstance(final WebViewFragment fragment, final FragmentManager manager, final String searchTerm, final String symbolType, int containerViewId, final int inAnimation, final int outAnimation, final int popInAnimation, final int popOutAnimation) { final Bundle bundle = new Bundle(); bundle.putString(SEARCH_TERM, searchTerm); bundle.putString(WebViewFragment.SYMBOL_TYPE, symbolType); bundle.putInt(WebViewFragment.CONTAINER_ID, containerViewId); fragment.setArguments(bundle); FragmentInfo fragmentInfo = new FragmentInfo(TransactionMethods.ADD, containerViewId); fragmentInfo.setAnimation(inAnimation, outAnimation); fragmentInfo.setPopAnimation(popInAnimation, popOutAnimation); fragmentInfo.setFragmentTag(TAG_FRAGMENT_WEBVIEW); fragmentInfo.setActionBarTitle(Application.getAppResources().getString(R.string.title_search)); FragmentStackManager.getInstance().transitionFragment(manager, fragment, fragmentInfo); URL = getUrl(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = this.getArguments(); URL = getUrl(); if(bundle != null) mSearchTerm = getArguments().getString(SEARCH_TERM); } public void setSearchTerms(String sTerms){ mSearchTerm = sTerms; } public static void removeInstance(final FragmentManager manager) { final WebViewFragment fragment = (WebViewFragment) manager.findFragmentByTag(TAG_FRAGMENT_WEBVIEW); if (fragment == null) { return; } final FragmentStackManager stackManager = FragmentStackManager.getInstance(); if (stackManager.getTopFragment() instanceof WebViewFragment) { stackManager.popTopFragment(); } } private boolean goingBack = false; private boolean onBackPressClearStack = true; public void setOnBackPressClearStack(boolean b){ onBackPressClearStack = b; } public boolean webViewSteppedBack() { if (mWebview != null &amp;&amp; mWebview.canGoBack()) { final Animation slide = new TranslateAnimation(100, 1000, 0, 0); slide.setDuration(800); mWebview.startAnimation(slide); WebBackForwardList mWebBackForwardList = mWebview.copyBackForwardList(); String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl(); mWebview.goBack(); return true; } return false; } @Override public boolean backPressed(final MainActivity mainActivity) { if (webViewSteppedBack()) { return true; } if (onBackPressClearStack) { goingBack = true; } return false; } private static String getUrl(){ String url = ""; final String getuuid = SharedPreferencesManager.getInstance().getUUID(); final String environmentApi = SharedPreferencesManager.getInstance().getEnvironmentApi(); if (environmentApi.equalsIgnoreCase(NetworkUtils.Apis.ALPHA)) { url = "https://cp.com/fwd/service/v1/?q="+mSearchTerm+"%20revenue&amp;ui.theme=novadark&amp;uuid="+getuuid+"&amp;userAgent=android"; } return url; } private static WebViewFragment __newInstance(final WebViewFragment fragment, final FragmentManager manager, final String searchTerm, final String symbolType, int containerViewId) { return __newInstance(fragment, manager,searchTerm, symbolType, containerViewId, R.anim.slide_in_from_right, R.anim.slide_out_to_left, R.anim.slide_in_from_left, R.anim.slide_out_to_right); } private static void clearWebView(final FragmentManager manager) { final WebViewFragment fragment = (WebViewFragment) manager.findFragmentByTag(TAG_FRAGMENT_WEBVIEW); if (fragment != null &amp;&amp; fragment instanceof WebViewFragment) { ((WebViewFragment)fragment).clearWebView(); } } public static WebViewFragment newInstance(final FragmentManager manager, final String searchTerm, String symbolType) { clearWebView(manager); return __newInstance(new WebViewFragment(), manager, searchTerm, symbolType, R.id.fragment_container); } public static WebViewFragment newInstance(final FragmentManager manager, final String searchTerm, String symbolType, int containerViewId) { clearWebView(manager); return __newInstance(new WebViewFragment(), manager, searchTerm, symbolType, containerViewId); } public static WebViewFragment newInstanceNoBackPressed(final FragmentManager manager, final String searchTerm, final String symbolType, int containerViewId) { WebViewFragment fragment = __newInstance(new WebViewFragment(), manager, searchTerm, symbolType, containerViewId); fragment.setOnBackPressClearStack(false); return fragment; } public static WebViewFragment newInstanceNoBackPressed(final WebViewFragment fragment, final FragmentManager manager, final String searchTerm, final String symbolType, int containerViewId) { fragment.setOnBackPressClearStack(false); return __newInstance(fragment, manager, searchTerm, symbolType, containerViewId); } public static WebViewFragment newInstanceForSearch(final FragmentManager manager, final String searchTerm, String symbolType) { WebViewFragment fragment = __newInstance(new WebViewFragment(), manager, searchTerm, symbolType, R.id.fragment_container, R.anim.no_animation, R.anim.slide_out_to_right, R.anim.slide_in_from_right, R.anim.slide_out_to_right); return fragment; } @Override public void onResume() { super.onResume(); final MainActivity activity = (MainActivity) getActivity(); activity.updateActionBarTitle(); activity.setBackPressListener(this); } public void clearWebView() { if (mWebview != null) { mWebview.removeAllViews(); mWebview.destroy(); mWebview = null; } } @Override public void onClick(View v) { getActivity().finish(); } @SuppressWarnings("deprecation") @SuppressLint({ "SetJavaScriptEnabled", "NewApi" }) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (goingBack) { return null; } final MainActivity activity = (MainActivity) getActivity(); activity.setBackPressListener(this); View view = inflater.inflate(R.layout.fragment_search, container, false); mWebview = (WebView)view.findViewById(R.id.webview); progressBar = (LinearLayout) view.findViewById(R.id.loading); mWebview.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE); mWebview.setWebViewClient(new MyWebViewClient(this, mWebview)); mWebview.getSettings().setUseWideViewPort(true); mWebview.setBackgroundColor(0); mWebview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); mWebview.getSettings().setAllowFileAccess(true); mWebview.getSettings().setDomStorageEnabled(true); mWebview.getSettings().setJavaScriptEnabled(true); mWebview.setScrollbarFadingEnabled(false); mWebview.getSettings().getLoadsImagesAutomatically(); android.webkit.CookieManager webCookieManager = CookieManager.getInstance(); webCookieManager.setAcceptCookie(true); mWebview.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); String serverError = "412"; if (title.contains(serverError)) { view.stopLoading(); SearchResultsFragment.newInstance(getFragmentManager(), mSearchTerm); } } }); if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.HONEYCOMB) mWebview.getSettings().setDisplayZoomControls(false); SharedPreferencesManager mgr = SharedPreferencesManager.getInstance(); CookieStore cookieStore = mgr.getCookieStore(); Cookie cookie = cookieStore.getCookies().get(0); String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain(); CookieManager cookieMgr = CookieManager.getInstance(); cookieMgr.setCookie(URL, cookieString); mWebview.loadUrl(URL); return view; } public class MyWebViewClient extends WebViewClient { public MyWebViewClient(WebViewFragment sWebViewFragment, WebView webview) { super(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { view.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { final Animation fade = new AlphaAnimation(0.0f, 1.0f); fade.setDuration(200); view.startAnimation(fade); view.setVisibility(View.VISIBLE); progressBar.setVisibility(View.GONE); } @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl ) { Toast.makeText(view.getContext(), "Authentication Error", Toast.LENGTH_LONG).show(); super.onReceivedError(view, errorCode, description, failingUrl); } @Override public void onLoadResource( WebView view, String url ){ } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onReceivedHttpAuthRequest( WebView view, final HttpAuthHandler handler, final String host, final String realm ){ handler.proceed(USERNAME,PASSWORD); } @Override public void onReceivedSslError( WebView view, SslErrorHandler handler, SslError error ) { handler.proceed(); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload