Reputation: 1001
I am currently working on an app that loads https://web.whatsapp.com/ whatsapp for web in desktop mode in Android WebView. It is working fine on lollipop version but above those i.e. API 23 and above (marshmallow and above) the app loads the website only once and if the reload button is pressed it just shows a blank screen !
Here is the code working fine on android API level 21 BUT NOT ABOVE IT please help !!
public class Main_web_view_frag extends android.support.v4.app.Fragment
{
public WebView Assignment_webView;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View slide_view = inflater.inflate(R.layout.assignment_main_webview, container, false);
Assignment_webView = (WebView)slide_view.findViewById(R.id.webView);
Assignment_webView.getSettings().setJavaScriptEnabled(true);
Assignment_webView.setWebViewClient(new My_web_Browser());
Assignment_webView.loadUrl("https://web.whatsapp.com/");
setDesktopMode(true);
return slide_view;
}
private class My_web_Browser extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return true;
}
}
public void setDesktopMode(final boolean enabled)
{
final WebSettings Assignment_webSettings = Assignment_webView.getSettings();
String new_Assign_UserAgent;
if (enabled)
{
new_Assign_UserAgent = Assignment_webSettings.getUserAgentString().replace("Mobile", "eliboM").replace("Android", "diordnA");
}
else
{
new_Assign_UserAgent = Assignment_webSettings.getUserAgentString().replace("eliboM", "Mobile").replace("diordnA", "Android");
}
Assignment_webSettings.getJavaScriptEnabled();
Assignment_webSettings.setUserAgentString(new_Assign_UserAgent);
Assignment_webSettings.setUseWideViewPort(true);
Assignment_webSettings.setLoadWithOverviewMode(true);
Assignment_webSettings.setSupportZoom(enabled);
Assignment_webSettings.setBuiltInZoomControls(true);
Assignment_webSettings.getJavaScriptCanOpenWindowsAutomatically();
Assignment_webSettings.setDisplayZoomControls(false);
Assignment_webSettings.setDatabaseEnabled(true);
Assignment_webSettings.setDomStorageEnabled(true);
Assignment_webSettings.setAllowFileAccess(true);
Assignment_webSettings.setAppCacheEnabled(true);
Assignment_webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
Assignment_webSettings.setAppCachePath(getActivity().getApplicationContext().getCacheDir().getPath());
String appCachePath = getActivity().getCacheDir().getAbsolutePath();
Assignment_webSettings.setAppCachePath(appCachePath);
}
}
Upvotes: 1
Views: 1109
Reputation: 1001
Finally got a solution !! You just need to add a useragent string to your webview to act like chrome or any other web browser.
yourWebView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
Upvotes: 1