package org.aisen.weibo.sina.ui.activity.browser; import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v7.widget.ShareActionProvider; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import org.aisen.android.common.utils.Utils; import org.aisen.android.support.inject.ViewInject; import org.aisen.android.ui.activity.basic.BaseActivity; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.support.utils.AisenUtils; import org.aisen.weibo.sina.support.utils.ThemeUtils; import org.aisen.weibo.sina.support.utils.UMengUtil; import fr.castorflex.android.smoothprogressbar.SmoothProgressBar; /** * 内置浏览器 * * @author Jeff.Wang * * @date 2014年11月5日 */ public class BrowserActivity extends BaseActivity { private final static String TAG = "Browser"; @ViewInject(id = R.id.webview) WebView mWebView; @ViewInject(id = R.id.progress) SmoothProgressBar progressbar; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ui_browser); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(false); getSupportActionBar().setTitle(""); progressbar.setIndeterminate(true); WebSettings setting = mWebView.getSettings(); setting.setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, final String url) { if (!url.startsWith("http://") && !url.startsWith("https://")) view.loadUrl("http://" + url); else view.loadUrl(url); // if (url.startsWith("http://weibo.com/")) return true; } }); mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress < 100) { progressbar.setVisibility(View.VISIBLE); } else if (newProgress == 100) { progressbar.setVisibility(View.GONE); invalidateOptionsMenu(); } progressbar.setProgress(newProgress); super.onProgressChanged(view, newProgress); } }); setting.setJavaScriptCanOpenWindowsAutomatically(true); if (savedInstanceState == null) { String url = null; String action = getIntent().getAction(); if (Intent.ACTION_VIEW.equalsIgnoreCase(action) && getIntent().getData() != null) { url = getIntent().getData().toString(); } else { url = getIntent().getStringExtra("url"); } if (url.startsWith("aisen://")) url = url.replace("aisen://", ""); mWebView.loadUrl(url); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.removeGroup(R.id.browser); getMenuInflater().inflate(R.menu.menu_browser, menu); String shareContent = String.format("%s %s ", mWebView.getTitle() + "", mWebView.getUrl() + ""); Intent shareIntent = Utils.getShareIntent(shareContent, "", null); MenuItem shareItem = menu.findItem(R.id.share); ShareActionProvider shareProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem); shareProvider.setShareHistoryFileName("channe_share.xml"); shareProvider.setShareIntent(shareIntent); return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.refresh) { mWebView.reload(); } else if (item.getItemId() == R.id.copy) { AisenUtils.copyToClipboard(mWebView.getUrl()); showMessage(R.string.msg_url_copyed); } else if (item.getItemId() == R.id.to_browser) { try { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse(mWebView.getUrl()); intent.setData(content_url); startActivity(intent); } catch (Exception e) { } } return super.onOptionsItemSelected(item); } @Override public boolean onHomeClick() { return super.onBackClick(); } @Override public boolean onBackClick() { if (mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onBackClick(); } @Override public void onDestroy() { super.onDestroy(); mWebView.destroy(); } @Override public void onResume() { super.onResume(); UMengUtil.onPageStart(this, "内置浏览器页"); } @Override public void onPause() { super.onPause(); UMengUtil.onPageEnd(this, "内置浏览器页"); } @Override protected int configTheme() { return ThemeUtils.themeArr[AppSettings.getThemeColor()][0]; } }