package org.carelife.creader.ui.activity;
import org.carelife.creader.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.GeolocationPermissions;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.PluginState;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class WebViewActivity extends Activity {
private WebView myWebview;
private LinearLayout l_bar;
private String orginalUrl;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tcwebview);
l_bar = (LinearLayout) findViewById(R.id.tc_webview_progressbar);
orginalUrl = getIntent().getStringExtra("url");
myWebview = (WebView) findViewById(R.id.webview_map);
if (savedInstanceState != null)
myWebview.restoreState(savedInstanceState);
try {
WebSettings s = myWebview.getSettings();
s.setJavaScriptEnabled(true);
s.setPluginsEnabled(true);
s.setNeedInitialFocus(false);
s.setSupportZoom(true);
myWebview.setHorizontalScrollBarEnabled(false);
myWebview.setVerticalScrollBarEnabled(true);
myWebview.setVerticalScrollbarOverlay(true);
myWebview.setWebChromeClient(new chromeClient());
myWebview.setWebViewClient(new webViewClient());
s.setUserAgentString(s.getUserAgentString() + " SogouNovel Android");
s.setPluginState(PluginState.OFF);
s.setLoadsImagesAutomatically(PreferenceManager
.getDefaultSharedPreferences(this).getBoolean(
"loadImageState", true));
s.setUseWideViewPort(true);
s.setLoadWithOverviewMode(true);
s.setBuiltInZoomControls(true);//
s.setAppCacheEnabled(true);
s.setSaveFormData(true);
s.setSavePassword(true);
s.setGeolocationEnabled(true);
s.setGeolocationDatabasePath("/data/data/com.sogou.activit.src/databases/");
s.setDomStorageEnabled(true);
} catch (Exception e) {
e.printStackTrace();
}
if (orginalUrl != null) {
myWebview.loadUrl(orginalUrl);
} else {
WebViewActivity.this.finish();
}
ImageView back = (ImageView) findViewById(R.id.web_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (myWebview.canGoBack()) {
myWebview.goBack();
} else {
WebViewActivity.this.finish();
}
}
});
}
class webViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageStarted(WebView view, String url, Bitmap favicon) {
l_bar.setVisibility(View.VISIBLE);
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
l_bar.setVisibility(View.GONE);
super.onPageFinished(view, url);
}
}
class chromeClient extends WebChromeClient {
public void onProgressChanged(WebView view, int newProgress) {
WebViewActivity.this.setProgress(newProgress * 100);
super.onProgressChanged(view, newProgress);
}
public void onReceivedTitle(WebView view, String title) {
}
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
callback.invoke(origin, true, false);
}
}
protected void onSaveInstanceState(Bundle outState) {
myWebview.saveState(outState);
}
}