实例介绍
【实例简介】
【实例截图】


【核心代码】
package cn.hi321.browser.ui.activities;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.webkit.DownloadListener;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebIconDatabase;
import android.webkit.WebView;
import android.webkit.WebView.HitTestResult;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;
import cn.hi321.browser.BrowserApp;
import cn.hi321.browser.CrashHandler;
import cn.hi321.browser.config.Constants;
import cn.hi321.browser.controllers.Controller;
import cn.hi321.browser.download.DownloadActivity;
import cn.hi321.browser.download.DownloadHelper;
import cn.hi321.browser.events.EventConstants;
import cn.hi321.browser.events.EventController;
import cn.hi321.browser.events.IDownloadEventsListener;
import cn.hi321.browser.greendroid.QuickAction;
import cn.hi321.browser.greendroid.QuickActionGrid;
import cn.hi321.browser.greendroid.QuickActionWidget;
import cn.hi321.browser.greendroid.QuickActionWidget.OnQuickActionClickListener;
import cn.hi321.browser.model.MediaItem;
import cn.hi321.browser.model.items.DownloadItem;
import cn.hi321.browser.player.SystemPlayer;
import cn.hi321.browser.preferences.PreferencesActivity;
import cn.hi321.browser.providers.BookmarksProviderWrapper;
import cn.hi321.browser.providers.BookmarksProviderWrapper.BookmarksSource;
import cn.hi321.browser.ui.components.CustomWebChromeClient;
import cn.hi321.browser.ui.components.CustomWebView;
import cn.hi321.browser.ui.components.CustomWebViewClient;
import cn.hi321.browser.ui.runnables.HistoryUpdater;
import cn.hi321.browser.utils.AnimationManager;
import cn.hi321.browser.utils.ApplicationUtils;
import cn.hi321.browser.utils.IOUtils;
import cn.hi321.browser.utils.LogUtil;
import cn.hi321.browser.utils.UrlUtils;
import cn.hi321.browser.utils.UserPreference;
import cn.hi321.browser.utils.Utils;
import cn.hi321.browser.view.PopMenu;
import cn.hi321.browser.view.PopWindowAddNewPage;
import com.minisea.cookbook.R;
import com.umeng.analytics.MobclickAgent;
import com.umeng.fb.FeedbackAgent;
import com.umeng.update.UmengUpdateAgent;
import com.umeng.update.UmengUpdateListener;
import com.umeng.update.UpdateResponse;
import com.umeng.content.UmengAction;
public class HomeActivity extends Activity implements OnTouchListener,
IDownloadEventsListener {
public static boolean isNeedLoadHide = false;// 不需要加载
private static String TAG = "HomeActivity";
public static HomeActivity INSTANCE = null;
private static final int FLIP_PIXEL_THRESHOLD = 200;
private static final int FLIP_TIME_THRESHOLD = 400;
private static final int CONTEXT_MENU_OPEN = Menu.FIRST 10;
private static final int CONTEXT_MENU_OPEN_IN_NEW_TAB = Menu.FIRST 11;
private static final int CONTEXT_MENU_DOWNLOAD = Menu.FIRST 12;
private static final int CONTEXT_MENU_COPY = Menu.FIRST 13;
private static final int CONTEXT_MENU_SEND_MAIL = Menu.FIRST 14;
private static final int CONTEXT_MENU_SHARE = Menu.FIRST 15;
private static final int OPEN_BOOKMARKS_HISTORY_ACTIVITY = 0;
private static final int OPEN_DOWNLOADS_ACTIVITY = 1;
public static final int OPEN_FILE_CHOOSER_ACTIVITY = 2;
protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
protected LayoutInflater mInflater = null;
private RelativeLayout mTopBar;
private LinearLayout mBottomBar;
private LinearLayout mFindBar;
private ImageButton mFindPreviousButton;
private ImageButton mFindNextButton;
private ImageButton mFindCloseButton;
private EditText mFindText;
private Button mMoreButton;
private Button mSearchButton;
private ImageButton mToolMenuBtn;
private Button mToolsButton;
public TextView mUrlEditText;
private ImageView delectView;
public ProgressBar mProgressBar;
private ImageView mBubbleRightView;
private ImageView mBubbleLeftView;
public static int selectePosition = -1;
public CustomWebView mCurrentWebView;
private List<CustomWebView> mWebViews;
private FrameLayout mContentView;
private ImageButton mPreviousButton;
private ImageButton mNextButton;
private ImageButton mNewTabButton;
private boolean mUrlBarVisible;
private boolean mToolsActionGridVisible = false;
private boolean mFindDialogVisible = false;
private ImageButton returnHomeTabBtn;
public ViewFlipper mViewFlipper;
private TextView mNewTabButtonNumber;
private GestureDetector mGestureDetector;
private SwitchTabsMethod mSwitchTabsMethod = SwitchTabsMethod.BOTH;
private QuickActionGrid mToolsActionGrid;
private ValueCallback<Uri> mUploadMessage;
private OnSharedPreferenceChangeListener mPreferenceChangeListener;
private View mCustomView;
private FrameLayout mFullscreenContainer;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
private PopWindowAddNewPage mPopWindowAddNewPage;// 添加新标签页
private PopMenu popMenu;
private enum SwitchTabsMethod {
BUTTONS, FLING, BOTH
}
public ValueCallback<Uri> getUploadMessage() {
return mUploadMessage;
}
public void setUploadMessage(ValueCallback<Uri> mUploadMessage) {
this.mUploadMessage = mUploadMessage;
}
private RefreshDataBroadcast mRefreshDataBroadcast;
// [start]生命周期
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
INSTANCE = HomeActivity.this;
Controller.getInstance().setPreferences(
PreferenceManager.getDefaultSharedPreferences(this));
Constants.initializeConstantsFromResources(this);
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(INSTANCE);
UserPreference.ensureIntializePreference(HomeActivity.this);
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
isNeedLoadHide = false;
// setSereenLuminance();
setContentView(R.layout.above_slidingmenu);
EventController.getInstance().addDownloadListener(this);
mRefreshDataBroadcast = new RefreshDataBroadcast();
registerReceiver(mRefreshDataBroadcast, new IntentFilter("search"));
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
buildComponents();
mViewFlipper.removeAllViews();
updateSwitchTabsMethod();
updateBookmarksDatabaseSource();
registerPreferenceChangeListener();
Intent i = getIntent();
if (i.getData() != null) {
// App first launch from another app.
addTab(false);
navigateToUrl(i.getDataString());// i.getDataString()获得所安装的包名
} else {
boolean lastPageRestored = false;
if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(
Constants.PREFERENCES_BROWSER_RESTORE_LAST_PAGE, false)) {
if (savedInstanceState != null) {
String savedUrl = savedInstanceState
.getString(Constants.EXTRA_SAVED_URL);
if (savedUrl != null) {
addTab(false);
navigateToUrl(savedUrl);
lastPageRestored = true;
}
}
}
if (!lastPageRestored) {
addTab(true);
}
}
initializeWebIconDatabase();
// isLANDSCAPE = false;
// 自动更新
UmengUpdateAgent.update(this);
UmengUpdateAgent.setUpdateAutoPopup(true);
// 用户反馈
/*
* FeedbackAgent agent = new FeedbackAgent(MainActivity.this);
* agent.sync();
*/
}
/**
* Initialize the Web icons database.
*/
private void initializeWebIconDatabase() {
final WebIconDatabase db = WebIconDatabase.getInstance();
db.open(getDir("icons", 0).getPath());
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
WebIconDatabase.getInstance().close();
mCurrentWebView.setVisibility(View.GONE);
if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(
Constants.PREFERENCES_PRIVACY_CLEAR_CACHE_ON_EXIT, false)) {
mCurrentWebView.clearCache(true);
}
EventController.getInstance().removeDownloadListener(this);
PreferenceManager.getDefaultSharedPreferences(this)
.unregisterOnSharedPreferenceChangeListener(
mPreferenceChangeListener);
unregisterReceiver(mRefreshDataBroadcast);
}
/**
* 连续按两次返回键就退出
*/
@Override
protected void onResume() {
mCurrentWebView.doOnResume();
MobclickAgent.onResume(this);
super.onResume();
}
/**
* Show a toast alert on tab switch.
*/
private void showToastOnTabSwitch() {
if (Controller
.getInstance()
.getPreferences()
.getBoolean(Constants.PREFERENCES_SHOW_TOAST_ON_TAB_SWITCH,
true)) {
String text;
if (mCurrentWebView.getTitle() != null) {
text = String.format(
getString(R.string.Main_ToastTabSwitchFullMessage),
mViewFlipper.getDisplayedChild() 1,
mCurrentWebView.getTitle());
} else {
text = String.format(
getString(R.string.Main_ToastTabSwitchMessage),
mViewFlipper.getDisplayedChild() 1);
}
// Toast.makeText(this,"测试啊啊啊" text, Toast.LENGTH_SHORT).show();
}
}
/**
* Show the previous tab, if any.
*/
private void showPreviousTab(boolean resetToolbarsRunnable) {
if (mViewFlipper.getChildCount() > 1) {
if (mFindDialogVisible) {
closeFindDialog();
}
mCurrentWebView.doOnPause();
mViewFlipper.setInAnimation(AnimationManager.getInstance()
.getInFromLeftAnimation());
mViewFlipper.setOutAnimation(AnimationManager.getInstance()
.getOutToRightAnimation());
mViewFlipper.showPrevious();
mCurrentWebView = mWebViews.get(mViewFlipper.getDisplayedChild());
mCurrentWebView.doOnResume();
showToastOnTabSwitch();
updateUI();
}
}
private int mOriginalOrientation;
public void showCustomView(View view,
WebChromeClient.CustomViewCallback callback, boolean isUseNew) {
if (isUseNew) {
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
setToolbarsVisibility(false);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (Build.VERSION.SDK_INT >= 14) {
mFullscreenContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mOriginalOrientation = getRequestedOrientation();
mContentView.setVisibility(View.INVISIBLE);
mFullscreenContainer.setVisibility(View.VISIBLE);
mFullscreenContainer.bringToFront();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else {
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
mOriginalOrientation = getRequestedOrientation();
// add by yanggf
HomeActivity.this.getWindow().getDecorView();
FrameLayout decor = (FrameLayout) getWindow().getDecorView();
mFullscreenContainer = new FullscreenHolder(HomeActivity.this);
mFullscreenContainer.addView(view, COVER_SCREEN_PARAMS);
decor.addView(mFullscreenContainer, COVER_SCREEN_PARAMS);
mCustomView = view;
setStatusBarVisibility(false);
mCustomViewCallback = callback;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
public void hideCustomView(boolean isUseNew) {
Log.e(TAG, "onHideCustomView()===");
if (isUseNew) {
mContentView.setVisibility(View.VISIBLE);
if (mCustomView == null) {
return;
}
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
setToolbarsVisibility(true);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
mCustomView.setVisibility(View.GONE);
mFullscreenContainer.removeView(mCustomView);
mFullscreenContainer.setVisibility(View.GONE);
mCustomView = null;
try {
mCustomViewCallback.onCustomViewHidden();
} catch (Exception e) {
}
// Show the content view.
setRequestedOrientation(mOriginalOrientation);
if (mCurrentWebView != null) {
mCurrentWebView.doOnResume();
}
} else {
if (mCustomView == null)
return;
setStatusBarVisibility(true);
try {
FrameLayout decor = (FrameLayout) getWindow().getDecorView();
if (decor != null && mFullscreenContainer != null) {
decor.removeView(mFullscreenContainer);
}
} catch (Exception e) {
e.printStackTrace();
}
try {
mCustomViewCallback.onCustomViewHidden();
} catch (Exception e) {
e.printStackTrace();
}
setRequestedOrientation(mOriginalOrientation);
if (mCurrentWebView != null) {
mCurrentWebView.doOnResume();
}
mFullscreenContainer = null;
mCustomView = null;
}
}
/**
* Show the next tab, if any.
*/
private void showNextTab(boolean resetToolbarsRunnable) {
if (mViewFlipper.getChildCount() > 1) {
if (mFindDialogVisible) {
closeFindDialog();
}
mCurrentWebView.doOnPause();
mViewFlipper.setInAnimation(AnimationManager.getInstance()
.getInFromRightAnimation());
mViewFlipper.setOutAnimation(AnimationManager.getInstance()
.getOutToLeftAnimation());
mViewFlipper.showNext();
mCurrentWebView = mWebViews.get(mViewFlipper.getDisplayedChild());
mCurrentWebView.doOnResume();
showToastOnTabSwitch();
// updatePreviousNextTabViewsVisibility();
updateUI();
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// hideKeyboard(true);
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
}
return mGestureDetector.onTouchEvent(event);
}
/**
* Check if the url is in the AdBlock white list.
*
* @param url
* The url to check
* @return true if the url is in the white list
*/
private boolean checkInAdBlockWhiteList(String url) {
if (url != null) {
boolean inList = false;
Iterator<String> iter = Controller.getInstance()
.getAdBlockWhiteList(this).iterator();
while ((iter.hasNext()) && (!inList)) {
if (url.contains(iter.next())) {
inList = true;
}
}
return inList;
} else {
return false;
}
}
/**
* 网页加载结束执行方法
*
* @param url
*/
public void onPageFinished(String url) {
updateUI();
// updateGoButton();
// cancelProgressBar();
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
} else {
setToolbarsVisibility(true);
}
if ((Controller.getInstance().getPreferences().getBoolean(
Constants.PREFERENCES_ADBLOCKER_ENABLE, true))
&& (!checkInAdBlockWhiteList(mCurrentWebView.getUrl()))) {
mCurrentWebView.loadAdSweep();
}
WebIconDatabase.getInstance().retainIconForPageUrl(
mCurrentWebView.getUrl());
}
/**
* 页面加载开始时调用
*
* @param url
*/
public void onPageStarted(String url) {
if (mFindDialogVisible) {
closeFindDialog();
}
mNextButton.setEnabled(false);
updateGoButton();
updateUI();
if (url.equals(Constants.URL_ABOUT_HOME)
|| url.equals(Constants.URL_ABOUT_START)
|| url.equals(Constants.URL_ABOUT_VIDEO)) {
mProgressBar.setVisibility(View.GONE);
} else {
showProgressBar();
}
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
} else {
setToolbarsVisibility(true);
}
}
public void onUrlLoading(String url) {
setToolbarsVisibility(true);
}
public void onMailTo(String url) {
Intent sendMail = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(sendMail);
}
public void onExternalApplicationUrl(String url) {
try {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
} catch (Exception e) {
e.printStackTrace();
// Notify user that the vnd url cannot be viewed.
new AlertDialog.Builder(this)
.setTitle(R.string.Main_VndErrorTitle)
.setMessage(
String.format(
getString(R.string.Main_VndErrorMessage),
url))
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
}).setCancelable(true).create().show();
}
}
public void setHttpAuthUsernamePassword(String host, String realm,
String username, String password) {
mCurrentWebView.setHttpAuthUsernamePassword(host, realm, username,
password);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if ((item != null) && (item.getIntent() != null)) {
Bundle b = item.getIntent().getExtras();
switch (item.getItemId()) {
case CONTEXT_MENU_OPEN:
if (b != null) {
navigateToUrl(b.getString(Constants.EXTRA_ID_URL));
}
return true;
case CONTEXT_MENU_OPEN_IN_NEW_TAB:
if (b != null) {
addTab(false, mViewFlipper.getDisplayedChild());
navigateToUrl(b.getString(Constants.EXTRA_ID_URL));
}
return true;
case CONTEXT_MENU_DOWNLOAD:
if (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null
&& mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)) {
Toast.makeText(HomeActivity.this, "此图片不支持下载", 1).show();
} else {
if (b != null) {
doDownloadStart(b.getString(Constants.EXTRA_ID_URL),
null, null, null, 0);
}
}
return true;
case CONTEXT_MENU_COPY:
if (b != null) {
ApplicationUtils.copyTextToClipboard(this,
b.getString(Constants.EXTRA_ID_URL),
getString(R.string.Commons_UrlCopyToastMessage));
}
return true;
case CONTEXT_MENU_SHARE:
if (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null
&& mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)) {
ApplicationUtils.sharePage(HomeActivity.this,
"传递正能量的321浏览器火爆登场 ", " http://www.hi321.cn/");
} else {
if (b != null) {
ApplicationUtils.sharePage(this, "",
b.getString(Constants.EXTRA_ID_URL));
}
}
return true;
default:
return super.onContextItemSelected(item);
}
}
return super.onContextItemSelected(item);
}
@Override
public void onDownloadEvent(String event, Object data) {
if (event.equals(EventConstants.EVT_DOWNLOAD_ON_FINISHED)) {
DownloadItem item = (DownloadItem) data;
if (item.getErrorMessage() == null) {
Toast.makeText(this,
getString(R.string.Main_DownloadFinishedMsg),
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(
this,
getString(R.string.Main_DownloadErrorMsg,
item.getErrorMessage()), Toast.LENGTH_SHORT)
.show();
}
}
}
/**
* Gesture listener implementation.
*/
private class GestureListener extends
GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
mCurrentWebView.zoomIn();
return super.onDoubleTap(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (isSwitchTabsByFlingEnabled()) {
if (e2.getEventTime() - e1.getEventTime() <= FLIP_TIME_THRESHOLD) {
if (e2.getX() > (e1.getX() FLIP_PIXEL_THRESHOLD)) {
showPreviousTab(false);
return false;
}
// going forwards: pushing stuff to the left
if (e2.getX() < (e1.getX() - FLIP_PIXEL_THRESHOLD)) {
showNextTab(false);
return false;
}
}
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
class FullscreenHolder extends FrameLayout {
public FullscreenHolder(Context ctx) {
super(ctx);
setBackgroundColor(ctx.getResources().getColor(
android.R.color.black));
}
@Override
public boolean onTouchEvent(MotionEvent evt) {
return true;
}
}
@Override
/**
* 创建MENU
*/
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("menu");// 必须创建一项
return super.onCreateOptionsMenu(menu);
}
@Override
/**
* 拦截MENU
*/
public boolean onMenuOpened(int featureId, Menu menu) {
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(isFullScreen);
if (mPopWindowAddNewPage != null && mPopWindowAddNewPage.isShow()) {
mPopWindowAddNewPage.dismiss();
}
if (popMenu.isShow()) {
popMenu.dismiss();
} else {
popMenu.show(mToolMenuBtn);
}
} else {
if (mPopWindowAddNewPage != null && mPopWindowAddNewPage.isShow()) {
mPopWindowAddNewPage.dismiss();
}
if (popMenu.isShow()) {
popMenu.dismiss();
} else {
popMenu.show(mToolMenuBtn);
}
}
return false;// 返回为true 则显示系统menu
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString(Constants.EXTRA_SAVED_URL, mCurrentWebView.getUrl());
super.onSaveInstanceState(outState);
}
/**
* 这是屏幕亮暗
* */
private void setSereenLuminance() {
// 取得当前亮度
int normal = Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 255);
WindowManager.LayoutParams wl = getWindow().getAttributes();
// 进度条绑定最大亮度,255是最大亮度
float tmpFloat = (float) normal / 255;
if (tmpFloat > 0 && tmpFloat <= 1) {
wl.screenBrightness = tmpFloat;
}
getWindow().setAttributes(wl);
}
/**
* Handle url request from external apps.
*
* @param intent
* The intent.
*/
@Override
protected void onNewIntent(Intent intent) {
if (intent.getData() != null) {
addTab(false);
navigateToUrl(intent.getDataString());
}
setIntent(intent);
super.onNewIntent(intent);
}
/**
* Restart the application.
*/
public void restartApplication() {
PendingIntent intent = PendingIntent.getActivity(this.getBaseContext(),
0, new Intent(getIntent()), getIntent().getFlags());
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() 2000, intent);
System.exit(2);
}
/**
* Create main UI.
*/
private void buildComponents() {
popMenu = new PopMenu(HomeActivity.this, handler);
mToolsActionGrid = new QuickActionGrid(this);
mToolsActionGrid.addQuickAction(new QuickAction(this,
R.drawable.ic_btn_home, R.string.QuickAction_Home));
mToolsActionGrid.addQuickAction(new QuickAction(this,
R.drawable.ic_btn_share, R.string.QuickAction_Share));
mToolsActionGrid.addQuickAction(new QuickAction(this,
R.drawable.ic_btn_find, R.string.QuickAction_Find));
// mToolsActionGrid.addQuickAction(new QuickAction(this,
// R.drawable.ic_btn_select, R.string.QuickAction_SelectText));
mToolsActionGrid.addQuickAction(new QuickAction(this,
R.drawable.notification_start, R.string.Download));
UmengAction.initTimer(this, 30);
mToolsActionGrid
.setOnQuickActionClickListener(new OnQuickActionClickListener() {
@Override
public void onQuickActionClicked(QuickActionWidget widget,
int position) {
switch (position) {
case 0:
navigateToHome();
break;
case 1:
System.out.println(" mCurrentWebView.getTitle()=="
mCurrentWebView.getTitle());
if (HomeActivity.INSTANCE.mCurrentWebView != null
&& HomeActivity.INSTANCE.mCurrentWebView
.getUrl().equals(
Constants.URL_ABOUT_START)) {// 是主页
ApplicationUtils.sharePage(HomeActivity.this,
"传递正能量的321浏览器火爆登场 ",
" http://www.hi321.cn/");
} else {
ApplicationUtils.sharePage(HomeActivity.this,
mCurrentWebView.getTitle(),
mCurrentWebView.getUrl());
}
break;
case 2:
// Somewhat dirty hack: when the find dialog was
// shown from a QuickAction,
// the soft keyboard did not show... Hack is to wait
// a little before showing
// the file dialog through a thread.
startShowFindDialogRunnable();
break;
case 3:
// swithToSelectAndCopyTextMode();//这是文本选取复制
Intent intent = new Intent(HomeActivity.this,
DownloadActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.hold,
R.anim.push_bottom_out);
break;
case 4:
String currentUrl = mUrlEditText.getText()
.toString();
// Do not reload mobile view if already on it.
if (!currentUrl
.startsWith(Constants.URL_GOOGLE_MOBILE_VIEW_NO_FORMAT)) {
String url = String.format(
Constants.URL_GOOGLE_MOBILE_VIEW,
mUrlEditText.getText().toString());
navigateToUrl(url);
}
break;
}
}
});
mToolsActionGrid
.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
mToolsActionGridVisible = false;
}
});
mGestureDetector = new GestureDetector(this, new GestureListener());
mUrlBarVisible = true;
mWebViews = new ArrayList<CustomWebView>();
Controller.getInstance().setWebViewList(mWebViews);
mBubbleRightView = (ImageView) findViewById(R.id.BubbleRightView);
mBubbleRightView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setToolbarsVisibility(true);
}
});
mBubbleRightView.setVisibility(View.GONE);
mBubbleLeftView = (ImageView) findViewById(R.id.BubbleLeftView);
mBubbleLeftView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setToolbarsVisibility(true);
}
});
mBubbleLeftView.setVisibility(View.GONE);
mViewFlipper = (ViewFlipper) findViewById(R.id.ViewFlipper);
mTopBar = (RelativeLayout) findViewById(R.id.BarLayout);
mTopBar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Dummy event to steel it from the WebView, in case of clicking
// between the buttons.
}
});
mBottomBar = (LinearLayout) findViewById(R.id.BottomBarLayout);
mBottomBar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Dummy event to steel it from the WebView, in case of clicking
// between the buttons.
}
});
mFindBar = (LinearLayout) findViewById(R.id.findControls);
mFindBar.setVisibility(View.GONE);
mSearchButton = (Button) findViewById(R.id.searchBtn);
mSearchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(HomeActivity.this,
SearchsActivity.class);
startActivity(intent);
}
});
mUrlEditText = (TextView) findViewById(R.id.UrlText);
delectView = (ImageView) findViewById(R.id.delectid);
mUrlEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(HomeActivity.this, SearchActivity.class);
String url = (String) mUrlEditText.getTag();
if (url != null && url.length() > 6) {
i.putExtra("url", url);
}
HomeActivity.this.startActivity(i);
}
});
delectView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (isDelet) {
// 表示删除
mCurrentWebView.stopLoading();
} else {
// 刷新
mCurrentWebView.reload();
}
}
});
mToolMenuBtn = (ImageButton) findViewById(R.id.ToolMenuBtn);
mToolMenuBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
popMenu.show(mToolMenuBtn);
}
});
mToolsButton = (Button) findViewById(R.id.ToolsBtn);
mToolsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openAddBookmarkDialog();
}
});
mMoreButton = (Button) findViewById(R.id.moreBtn);
mMoreButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mToolsActionGridVisible = true;
mToolsActionGrid.show(v);
}
});
mProgressBar = (ProgressBar) findViewById(R.id.WebViewProgress);
// mWebViewProgressTop = (SeekBar)findViewById(R.id.WebViewProgressTop);
// mProgressBar.setMax(100);
mPreviousButton = (ImageButton) findViewById(R.id.PreviousBtn);
mNextButton = (ImageButton) findViewById(R.id.NextBtn);
mPreviousButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null
&& (!mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START) )) {
if(!mCurrentWebView .canGoBack()&& !mCurrentWebView.getUrl().equals(Constants.URL_ABOUT_URL)){
removWebView(selectePosition, mCurrentWebView);
setSelecteLabelPage();
}else if (mCustomView != null) {
hideCustomView(false);
} else if (mFindDialogVisible) {
closeFindDialog();
} else {
navigatePrevious();// 上一页
}
} else if (mUrlEditText.getText().equals("")
|| mUrlEditText.getText() == null){
if(!mCurrentWebView .canGoBack()&&mWebViews.size()>1){
removWebView(selectePosition, mCurrentWebView);
setSelecteLabelPage();
}else{
navigateToHome();
updateUI();
}
}
}
});
mNextButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
navigateNext();// 下一页
}
});
mNewTabButton = (ImageButton) findViewById(R.id.NewTabBtn);
mNewTabButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mPopWindowAddNewPage != null) {
if (mPopWindowAddNewPage.isShow()) {
mPopWindowAddNewPage.dismiss();
mPopWindowAddNewPage = null;
}
}
mPopWindowAddNewPage = new PopWindowAddNewPage(
HomeActivity.this, handler, mWebViews,
mCurrentWebView, mViewFlipper, mNewTabButton);
}
});
returnHomeTabBtn = (ImageButton) findViewById(R.id.returnHomeTabBtn);
returnHomeTabBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mUrlEditText != null
&& mUrlEditText.getText().toString()
.equals(Constants.URL_ABOUT_START)
|| (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null && mCurrentWebView
.getUrl().equals(Constants.URL_ABOUT_START))) {
Toast.makeText(HomeActivity.this, "已经是主页", 0).show();
navigateToHome();
return;
} else {
navigateToHome();
}
updateUI();
}
});
mNewTabButtonNumber = (TextView) findViewById(R.id.number);
mFindPreviousButton = (ImageButton) findViewById(R.id.find_previous);
mFindPreviousButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mCurrentWebView.findNext(false);
hideKeyboardFromFindDialog();
}
});
mFindNextButton = (ImageButton) findViewById(R.id.find_next);
mFindNextButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mCurrentWebView.findNext(true);
hideKeyboardFromFindDialog();
}
});
mFindCloseButton = (ImageButton) findViewById(R.id.find_close);
mFindCloseButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
closeFindDialog();
}
});
mFindText = (EditText) findViewById(R.id.find_value);
mFindText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
doFind();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
setAddNewPageSize();
}
/**
* 显示进度条
* */
public void showProgressBar() {
if ((mProgressBar != null && Utils.hasNetwork(HomeActivity.this))) {
mProgressBar.setVisibility(View.VISIBLE);
} else {
mProgressBar.setVisibility(View.GONE);
}
}
/**
* 关闭进度条
* */
public void cancelProgressBar() {
// mWebViewProgressTop.setVisibility(View.GONE);
mProgressBar.setVisibility(View.GONE);
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
} else {
setToolbarsVisibility(true);
}
}
/**
* 设置PreviousBtn 按钮的背景 canGoBack true 表示还可以继续点击前进
* */
public void setPreviousBackground(boolean canGoBack) {
if (canGoBack) {
isNeedLoadHide = true;
String url = Controller
.getInstance()
.getPreferences()
.getString(Constants.PREFERENCES_GENERAL_HOME_PAGE,
Constants.URL_ABOUT_START);
if (mCurrentWebView.getUrl().equals(url)) {
mPreviousButton.setImageResource(R.drawable.menubar_back_dis);
} else {
mPreviousButton.setImageResource(R.drawable.menubar_back_d);
}
} else {
isNeedLoadHide = false;
mPreviousButton.setImageResource(R.drawable.menubar_back_dis);
}
}
/**
* 设置NextBtn 按钮的背景 canNextBtn true 表示还可以继续点击
* */
public void setNextBtnBackground(boolean canNextBtn) {
if (canNextBtn) {
isNeedLoadHide = true;
mNextButton.setImageResource(R.drawable.menubar_forward_d);
} else {
mNextButton.setImageResource(R.drawable.menubar_forward_dis);
isNeedLoadHide = false;
}
}
/**
* 全屏切换
*/
public void fullScreenChange() {
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
setToolbarsVisibility(true);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
public void setAddNewPageSize() {
if (mWebViews != null) {
int number = mWebViews.size();
if (number == 0) {
number = 1;// 默认设置为1
}
mNewTabButtonNumber.setText(number "");
}
}
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case PopMenu.bookmarks:// 打开书签
openBookmarksHistoryActivity();
break;
case PopMenu.FindPage:// 页面查找
startShowFindDialogRunnable();
break;
case PopMenu.ShareUrl:// 页面分享
if (mCurrentWebView != null
&& mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)) {// 是主页
ApplicationUtils.sharePage(HomeActivity.this,
"传递正能量的321浏览器火爆登场 ", " http://www.hi321.cn/");
} else {
ApplicationUtils.sharePage(HomeActivity.this,
mCurrentWebView.getTitle(),
mCurrentWebView.getUrl());
}
break;
case PopMenu.SelectText:// 选择文本
swithToSelectAndCopyTextMode();
break;
case PopMenu.ADD_BOOKMARK: // 添加书签
openAddBookmarkDialog();
break;
case PopMenu.Download:// 下载管理
openDownloadsList();
break;
case PopMenu.Setting:// 设置
openPreferences();
break;
case PopMenu.Fankui:// 反馈
openFeedback();
break;
case PopMenu.exit:// 退出
HomeActivity.this.finish();
break;
case PopMenu.refreshview:// 刷新
if (mCurrentWebView.isLoading()) {
mCurrentWebView.stopLoading();
} else {
mCurrentWebView.reload();
}
break;
case PopMenu.Update:
// 如果想程序启动时自动检查是否需要更新, 把下面两行代码加在Activity 的onCreate()函数里。
com.umeng.common.Log.LOG = true;
UmengUpdateAgent.setUpdateOnlyWifi(false); // 目前我们默认在Wi-Fi接入情况下才进行自动提醒。如需要在其他网络环境下进行更新自动提醒,则请添加该行代码
UmengUpdateAgent.setUpdateAutoPopup(false);
UmengUpdateAgent.setUpdateListener(updateListener);
UmengUpdateAgent.update(HomeActivity.this);
break;
case PopMenu.FullSeting:
// mUrlBarVisible = false;
fullScreenChange();
break;
case PopMenu.Guanyu:
Intent intent = new Intent(HomeActivity.this,
AboutActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.fade, R.anim.hold);
break;
case PopMenu.SCREEN_LUMINANCE:
// 取得当前亮度
int normal = Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 255);
if (normal < 255) {
// 夜间模式
// 根据当前进度改变亮度
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 255);
} else {
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 85);
}
setSereenLuminance();
break;
case PopWindowAddNewPage.ADDNEWPAGE:
addTab(true);// 新建标签页
setAddNewPageSize();
break;
case PopWindowAddNewPage.RemoveLabelPage:
setSelecteLabelPage();
break;
case PopWindowAddNewPage.LoadHomelPage:
navigateToHome();
updateUI();
break;
case PopWindowAddNewPage.SELECTPage:// 选择某一页
int pos = (Integer) msg.obj;
selectePosition = pos;
if (mViewFlipper.getChildCount() > pos) {
mWebViews = PopWindowAddNewPage.mWebViews;
mViewFlipper = PopWindowAddNewPage.mViewFlipper;
mCurrentWebView = mWebViews.get(pos);
mViewFlipper.getChildAt(pos);
mViewFlipper.setDisplayedChild(pos);
}
updateUI();
setAddNewPageSize();
//
break;
case PopMenu.SAVEIMAGE:
View view = HomeActivity.this.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();
final String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
IOUtils.SaveImage(b1);
Toast.makeText(HomeActivity.this, "保存成功", 1).show();
} else {
Toast.makeText(HomeActivity.this, "没有sdcard", 1).show();
}
break;
default:
break;
}
}
private void openFeedback() {
FeedbackAgent agent = new FeedbackAgent(HomeActivity.this);
agent.startFeedbackActivity();
}
};
public void removWebView(final int position,
final CustomWebView currentWebView) {
if (mWebViews != null
&& mWebViews.size() > position) {
currentWebView.doOnPause();
currentWebView.destroy();
mWebViews.remove(position);
mViewFlipper.removeViewAt(position);
PopWindowAddNewPage.mWebViews = mWebViews ;
PopWindowAddNewPage.mViewFlipper = mViewFlipper;
}
}
private void setSelecteLabelPage() {
List<CustomWebView> mWebViewsRemove = PopWindowAddNewPage.mWebViews;
ViewFlipper mViewFlip = PopWindowAddNewPage.mViewFlipper;
if (mWebViewsRemove != null && mWebViewsRemove.size() -1>= 0
&& mViewFlip != null && mViewFlip.getChildCount()-1 >= 0) {
selectePosition = mWebViewsRemove.size() -1;
mWebViews = mWebViewsRemove;
mViewFlipper = mViewFlip;
mCurrentWebView = mWebViews.get(selectePosition);
mViewFlipper.getChildAt(selectePosition);
mViewFlipper.setDisplayedChild(selectePosition);
} else {
navigateToHome();
}
updateUI();
setAddNewPageSize();
}
private void registerPreferenceChangeListener() {
mPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if (key.equals(Constants.PREFERENCE_BOOKMARKS_DATABASE)) {
updateBookmarksDatabaseSource();
}
}
};
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(
mPreferenceChangeListener);
}
/**
* Apply preferences to the current UI objects.
*/
public void applyPreferences() {
// To update to Bubble position.
// setToolbarsVisibility(false);
updateSwitchTabsMethod();
for (CustomWebView view : mWebViews) {
view.initializeOptions();
}
}
private void updateSwitchTabsMethod() {
String method = PreferenceManager.getDefaultSharedPreferences(this)
.getString(Constants.PREFERENCES_GENERAL_SWITCH_TABS_METHOD,
"buttons");
if (method.equals("buttons")) {
mSwitchTabsMethod = SwitchTabsMethod.BUTTONS;
} else if (method.equals("fling")) {
mSwitchTabsMethod = SwitchTabsMethod.FLING;
} else if (method.equals("both")) {
mSwitchTabsMethod = SwitchTabsMethod.BOTH;
} else {
mSwitchTabsMethod = SwitchTabsMethod.BUTTONS;
}
}
private void updateBookmarksDatabaseSource() {
String source = PreferenceManager.getDefaultSharedPreferences(this)
.getString(Constants.PREFERENCE_BOOKMARKS_DATABASE, "STOCK");
if (source.equals("STOCK")) {
BookmarksProviderWrapper.setBookmarksSource(BookmarksSource.STOCK);
} else if (source.equals("INTERNAL")) {
BookmarksProviderWrapper
.setBookmarksSource(BookmarksSource.INTERNAL);
}
}
private void setStatusBarVisibility(boolean visible) {
int flag = visible ? 0 : WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setFlags(flag, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
/**
* Initialize a newly created WebView.
*/
public void initializeCurrentWebView() {
mCurrentWebView.setWebViewClient(new CustomWebViewClient(
HomeActivity.this));
mCurrentWebView.setWebChromeClient(new CustomWebChromeClient(
HomeActivity.this));
mCurrentWebView.setOnTouchListener(this);
// 调用js意见反馈
mCurrentWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
handler.post(new Runnable() {
public void run() {
FeedbackAgent agent = new FeedbackAgent(
HomeActivity.this);
agent.startFeedbackActivity();
}
});
}
}, "feedbrack");
// mCurrentWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
mCurrentWebView
.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
HitTestResult result = ((WebView) v).getHitTestResult();
int resultType = result.getType();
if ((resultType == HitTestResult.ANCHOR_TYPE)
|| (resultType == HitTestResult.IMAGE_ANCHOR_TYPE)
|| (resultType == HitTestResult.SRC_ANCHOR_TYPE)
|| (resultType == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
Intent i = new Intent();
i.putExtra(Constants.EXTRA_ID_URL,
result.getExtra());
MenuItem item = menu.add(0, CONTEXT_MENU_OPEN, 0,
R.string.Main_MenuOpen);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_OPEN_IN_NEW_TAB, 0,
R.string.Main_MenuOpenNewTab);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_COPY, 0,
R.string.Main_MenuCopyLinkUrl);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_DOWNLOAD, 0,
R.string.Main_MenuDownload);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_SHARE, 0,
R.string.Main_MenuShareLinkUrl);
item.setIntent(i);
menu.setHeaderTitle(result.getExtra());
} else if (resultType == HitTestResult.IMAGE_TYPE) {
Intent i = new Intent();
i.putExtra(Constants.EXTRA_ID_URL,
result.getExtra());
MenuItem item = menu.add(0, CONTEXT_MENU_OPEN, 0,
R.string.Main_MenuViewImage);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_COPY, 0,
R.string.Main_MenuCopyImageUrl);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_DOWNLOAD, 0,
R.string.Main_MenuDownloadImage);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_SHARE, 0,
R.string.Main_MenuShareImageUrl);
item.setIntent(i);
menu.setHeaderTitle(result.getExtra());
} else if (resultType == HitTestResult.EMAIL_TYPE) {
Intent sendMail = new Intent(Intent.ACTION_VIEW,
Uri.parse(WebView.SCHEME_MAILTO
result.getExtra()));
MenuItem item = menu.add(0, CONTEXT_MENU_SEND_MAIL,
0, R.string.Main_MenuSendEmail);
item.setIntent(sendMail);
Intent i = new Intent();
i.putExtra(Constants.EXTRA_ID_URL,
result.getExtra());
item = menu.add(0, CONTEXT_MENU_COPY, 0,
R.string.Main_MenuCopyEmailUrl);
item.setIntent(i);
item = menu.add(0, CONTEXT_MENU_SHARE, 0,
R.string.Main_MenuShareEmailUrl);
item.setIntent(i);
menu.setHeaderTitle(result.getExtra());
}
}
});
mCurrentWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
LogUtil.e("onDownloadStart", "---url===" url
"---- userAgent===" userAgent
"---- contentDisposition===" contentDisposition
"---- mimetype====" mimetype
"---- contentLength===" contentLength);
doDownloadStart(url, userAgent, contentDisposition, mimetype,
contentLength);
}
});
}
/**
* Select Text in the webview and automatically sends the selected text to
* the clipboard. 选择文本并自动发送webview选中的文本到剪贴板
*/
public void swithToSelectAndCopyTextMode() {
try {
KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(mCurrentWebView);
} catch (Exception e) {
throw new AssertionError(e);
}
}
private void startPlayer(final String url, final DownloadItem item) {
Intent intent;
if (mVideoInfo != null) {
mVideoInfo.setUrl(url);
} else {
mVideoInfo = new cn.hi321.browser.media.entity.MediaItem();
mVideoInfo.setUrl(url);
}
try {
if (item.getFileName().trim().length() > 0)
mVideoInfo.setTitle(item.getFileName());
} catch (Exception e) {
e.printStackTrace();
}
if (url.contains("m3u8")) {
mVideoInfo.setLive(true);
} else {
mVideoInfo.setLive(false);
}
intent = new Intent(HomeActivity.this, SystemPlayer.class);
Bundle mBundle = new Bundle();
mBundle.putSerializable("VideoInfo", mVideoInfo);
intent.putExtras(mBundle);
LogUtil.i(TAG, "startActivity");
HomeActivity.this.startActivity(intent);
}
cn.hi321.browser.media.entity.MediaItem mVideoInfo = null;
/**
* Initiate a download. Check the SD card and start the download runnable.
*
* @param url
* The url to download.
* @param userAgent
* The user agent.
* @param contentDisposition
* The content disposition.
* @param mimetype
* The mime type.
* @param contentLength
* The content length.
*/
private void doDownloadStart(final String url, final String userAgent,
final String contentDisposition, final String mimetype,
final long contentLength) {
if (ApplicationUtils.checkCardState(this, true)) {
final DownloadItem item = new DownloadItem(this, url);
// Controller.getInstance().addToDownload(item);
// item.startDownload();
if (url != null && url.toLowerCase().contains(".m3u8")
|| mimetype != null
&& mimetype.toLowerCase().contains("video")
|| mimetype != null
&& mimetype.toLowerCase().contains("audio")) {
if (url != null && url.toLowerCase().contains(".m3u8")) {
startPlayer(url, item);
return;
}
String[] items = new String[] { "播放", "下载" };
new AlertDialog.Builder(HomeActivity.this)
.setTitle(R.string.app_name)
.setItems(items, new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
if (which == 0) {
startPlayer(url, item);
} else if (which == 1) {
MediaItem mediaItem = new MediaItem();
mediaItem.setId(item.getUrl());
mediaItem.setUrl(item.getUrl());
mediaItem.setName(item.getFileName());
mediaItem.setMimetype(mimetype);
mediaItem.setContentLength(contentLength);
mediaItem
.setContentDisposition(contentDisposition);
mediaItem.setUserAgent(userAgent);
mediaItem.setSrcPath(DownloadHelper
.getDownloadPath()
"/"
item.getFileName());
BrowserApp
.getInstance()
.getDownloadManager()
.download(mediaItem,
HomeActivity.this);
Toast.makeText(
HomeActivity.this,
getString(R.string.Main_DownloadStartedMsg),
Toast.LENGTH_SHORT).show();
} else {
startPlayer(url, item);
}
}
})
.setNegativeButton(R.string.user_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
}).create().show();
return;
} else {
new AlertDialog.Builder(HomeActivity.this)
.setTitle(R.string.app_name)
.setMessage(
HomeActivity.this
.getString(R.string.add_download_tip)
item.getFileName())
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
MediaItem mediaItem = new MediaItem();
mediaItem.setId(item.getUrl());
mediaItem.setUrl(item.getUrl());
mediaItem.setName(item.getFileName());
mediaItem.setMimetype(mimetype);
mediaItem
.setContentLength(contentLength);
mediaItem
.setContentDisposition(contentDisposition);
mediaItem.setUserAgent(userAgent);
mediaItem.setSrcPath(DownloadHelper
.getDownloadPath()
"/"
item.getFileName());
BrowserApp
.getInstance()
.getDownloadManager()
.download(mediaItem,
HomeActivity.this);
Toast.makeText(
HomeActivity.this,
getString(R.string.Main_DownloadStartedMsg),
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// result.cancel();
}
}).create().show();
return;
}
//
}
}
/**
* Add a new tab.
*
* @param navigateToHome
* If True, will load the user home page.
*/
public void addTab(boolean navigateToHome) {
addTab(navigateToHome, -1);
}
/**
* Add a new tab.
*
* @param navigateToHome
* If True, will load the user home page.
* @param parentIndex
* The index of the new tab.
*/
public void addTab(boolean navigateToHome, int parentIndex) {
if (mFindDialogVisible) {
closeFindDialog();
}
RelativeLayout view = (RelativeLayout) mInflater.inflate(
R.layout.webview, mViewFlipper, false);
mFullscreenContainer = (FrameLayout) view
.findViewById(R.id.fullscreen_custom_content);
mContentView = (FrameLayout) view.findViewById(R.id.main_content);
mCurrentWebView = (CustomWebView) view.findViewById(R.id.webview);
mFullscreenContainer.setFocusable(true);
initializeCurrentWebView();
synchronized (mViewFlipper) {
if (parentIndex != -1) {
mWebViews.add(parentIndex 1, mCurrentWebView);
mViewFlipper.addView(view, parentIndex 1);
} else {
mWebViews.add(mCurrentWebView);
mViewFlipper.addView(view);
}
selectePosition = mViewFlipper.indexOfChild(view);
mViewFlipper.setDisplayedChild(selectePosition);
}
if (navigateToHome) {
navigateToHome();
}
updateUI();
// updatePreviousNextTabViewsVisibility();
mUrlEditText.clearFocus();
}
@Override
protected void onPause() {
mCurrentWebView.doOnPause();
super.onPause();
MobclickAgent.onPause(this);
}
@Override
public void finish() {
// TODO Auto-generated method stub
super.finish();
System.exit(0);
}
private void doFind() {
CharSequence find = mFindText.getText();
if (find.length() == 0) {
mFindPreviousButton.setEnabled(false);
mFindNextButton.setEnabled(false);
mCurrentWebView.clearMatches();
} else {
int found = mCurrentWebView.findAll(find.toString());
if (found < 2) {
mFindPreviousButton.setEnabled(false);
mFindNextButton.setEnabled(false);
} else {
mFindPreviousButton.setEnabled(true);
mFindNextButton.setEnabled(true);
}
}
}
private void showFindDialog() {
setFindBarVisibility(true);
mCurrentWebView.doSetFindIsUp(true);
CharSequence text = mFindText.getText();
if (text.length() > 0) {
mFindText.setSelection(0, text.length());
doFind();
} else {
mFindPreviousButton.setEnabled(false);
mFindNextButton.setEnabled(false);
}
mFindText.requestFocus();
showKeyboardForFindDialog();
}
private void closeFindDialog() {
hideKeyboardFromFindDialog();
mCurrentWebView.doNotifyFindDialogDismissed();
setFindBarVisibility(false);
}
private void setFindBarVisibility(boolean visible) {
if (visible) {
mFindBar.startAnimation(AnimationManager.getInstance()
.getTopBarShowAnimation());
mFindBar.setVisibility(View.VISIBLE);
mFindDialogVisible = true;
} else {
mFindBar.startAnimation(AnimationManager.getInstance()
.getTopBarHideAnimation());
mFindBar.setVisibility(View.GONE);
mFindDialogVisible = false;
}
}
/**
* Change the tool bars visibility.
*
* @param visible
* If True, the tool bars will be shown.
*/
private void setToolbarsVisibility(boolean visible) {// visible 表示非全屏
if (visible) {// 非全屏
if (!mUrlBarVisible) {
mTopBar.setVisibility(View.VISIBLE);
mBottomBar.setVisibility(View.VISIBLE);
mBubbleRightView.setVisibility(View.GONE);
mBubbleLeftView.setVisibility(View.GONE);
}
mUrlBarVisible = true;
} else {// 全屏
// modify by yanggf
String title = mUrlEditText.getText().toString();
System.out.println("title===" title);
if ((mCurrentWebView != null && mCurrentWebView.getUrl() != null && mCurrentWebView
.getUrl().equals(Constants.URL_ABOUT_START))) {
mTopBar.setVisibility(View.VISIBLE);
mBottomBar.setVisibility(View.VISIBLE);
mBubbleRightView.setVisibility(View.GONE);
mBubbleLeftView.setVisibility(View.GONE);
} else {
if (mUrlBarVisible) {
mTopBar.setVisibility(View.GONE);
mBottomBar.setVisibility(View.GONE);
String bubblePosition = Controller
.getInstance()
.getPreferences()
.getString(
Constants.PREFERENCES_GENERAL_BUBBLE_POSITION,
"right");
if (bubblePosition.equals("right")) {
mBubbleRightView.setVisibility(View.VISIBLE);
mBubbleLeftView.setVisibility(View.GONE);
} else if (bubblePosition.equals("left")) {
mBubbleRightView.setVisibility(View.GONE);
mBubbleLeftView.setVisibility(View.VISIBLE);
} else if (bubblePosition.equals("both")) {
mBubbleRightView.setVisibility(View.VISIBLE);
mBubbleLeftView.setVisibility(View.VISIBLE);
} else {
mBubbleRightView.setVisibility(View.VISIBLE);
mBubbleLeftView.setVisibility(View.GONE);
}
mUrlBarVisible = false;
}
}
}
}
private void showKeyboardForFindDialog() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mFindText, InputMethodManager.SHOW_IMPLICIT);
}
private void hideKeyboardFromFindDialog() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mFindText.getWindowToken(), 0);
}
/**
* Hide the keyboard.
*
* @param delayedHideToolbars
* If True, will start a runnable to delay tool bars hiding. If
* False, tool bars are hidden immediatly.
*/
private void hideKeyboard(boolean delayedHideToolbars) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mUrlEditText.getWindowToken(), 0);
if (mUrlBarVisible) {
if (delayedHideToolbars) {
} else {
boolean isFullScreen = UserPreference.read("fullScreen", false);
if (isFullScreen) {
setToolbarsVisibility(false);
}
}
}
}
/**
* Thread to delay the show of the find dialog. This seems to be necessary
* when shown from a QuickAction. If not, the keyboard does not show. 50ms
* seems to be enough on a Nexus One and on the (rather) slow emulator.
* Dirty hack :(
*/
private void startShowFindDialogRunnable() {
new Thread(new Runnable() {
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
showFindDialog();
}
};
@Override
public void run() {
try {
Thread.sleep(50);
mHandler.sendEmptyMessage(0);
} catch (InterruptedException e) {
mHandler.sendEmptyMessage(0);
}
}
}).start();
}
/**
* Hide the tool bars.
*/
public void hideToolbars() {
if (mUrlBarVisible) {
if ((!mUrlEditText.hasFocus()) && (!mToolsActionGridVisible)) {
// if (!mCurrentWebView.isLoading()) {
//
// setToolbarsVisibility(false);
// }
}
}
// mHideToolbarsRunnable = null;
}
/**
* Start a runnable to update history.
*
* @param title
* The page title.
* @param url
* The page url.
*/
public void startHistoryUpdaterRunnable(String title, String url,
String originalUrl) {
if ((url != null) && (url.length() > 0)) {
new Thread(new HistoryUpdater(this, title, url, originalUrl))
.start();
}
}
/**
* Navigate to the given url.
*
* @param url
* The url.
*/
private void navigateToUrl(String url) {
// Needed to hide toolbars properly.
mUrlEditText.clearFocus();
mCurrentWebView.doOnResume();
if ((url != null) && (url.length() > 0)) {
if (UrlUtils.isUrl(url)) {
url = UrlUtils.checkUrl(url);
} else {
url = UrlUtils.getSearchUrl(this, url);
}
if (Controller.getInstance().getPreferences()
.getBoolean(Constants.PREFERENCES_SHOW_FULL_SCREEN, false)
&& Controller
.getInstance()
.getPreferences()
.getBoolean(
Constants.PREFERENCES_GENERAL_HIDE_TITLE_BARS,
true)) {
hideKeyboard(true);
}
if (url.equals(Constants.URL_ABOUT_START)) {
// mCurrentWebView.loadDataWithBaseURL(
// "file:///android_asset/startpage/",
// ApplicationUtils.getStartPage(this), "text/html",
// "UTF-8", Constants.URL_ABOUT_START);
mCurrentWebView.loadUrl("file:///android_asset/index/index.html");
} else {
// If the url is not from GWT mobile view, and is in the mobile
// view url list, then load it with GWT.
if ((!url
.startsWith(Constants.URL_GOOGLE_MOBILE_VIEW_NO_FORMAT))
&& (UrlUtils.checkInMobileViewUrlList(this, url))) {
url = String.format(Constants.URL_GOOGLE_MOBILE_VIEW, url);
}
mCurrentWebView.loadUrl(url);
}
}
}
/**
* Navigate to the url given in the url edit text.
*/
// private void navigateToUrl() {
// navigateToUrl(mUrlEditText.getText().toString());
// }
/**
* Navigate to the user home page.
*/
private void navigateToHome() {
isNeedLoadHide = true;
navigateToUrl(Controller
.getInstance()
.getPreferences()
.getString(Constants.PREFERENCES_GENERAL_HOME_PAGE,
Constants.URL_ABOUT_START));
}
/**
* 导航到前一页历史.
*/
private void navigatePrevious() {
// Needed to hide toolbars properly.
mUrlEditText.clearFocus();
if (Controller.getInstance().getPreferences()
.getBoolean(Constants.PREFERENCES_SHOW_FULL_SCREEN, false)
&& Controller
.getInstance()
.getPreferences()
.getBoolean(
Constants.PREFERENCES_GENERAL_HIDE_TITLE_BARS,
true)) {
hideKeyboard(true);
}
if (mCurrentWebView.canGoBack()) {
String url = Controller
.getInstance()
.getPreferences()
.getString(Constants.PREFERENCES_GENERAL_HOME_PAGE,
Constants.URL_ABOUT_START);
String currentUrl = mCurrentWebView.getUrl();
if (!currentUrl.equals(url)) {
isNeedLoadHide = true;
mCurrentWebView.goBack();
} /*
* else { mCurrentWebView.onPause(); }
*/
mCurrentWebView.doOnResume();
}
updateUI();
}
/**
* Navigate to the next page in history.
*/
private void navigateNext() {
// Needed to hide toolbars properly.
mUrlEditText.clearFocus();
if (Controller.getInstance().getPreferences()
.getBoolean(Constants.PREFERENCES_SHOW_FULL_SCREEN, false)
&& Controller
.getInstance()
.getPreferences()
.getBoolean(
Constants.PREFERENCES_GENERAL_HIDE_TITLE_BARS,
true)) {
hideKeyboard(true);
}
mCurrentWebView.goForward();
mCurrentWebView.doOnResume();
setNextBtnBackground(mCurrentWebView.canGoForward());
}
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
this.moveTaskToBack(true);
return true;
default:
return super.onKeyLongPress(keyCode, event);
}
}
// private boolean isBack = false;
private long mExitTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mUrlEditText != null
&& mUrlEditText.getText().toString()
.equals(Constants.URL_ABOUT_START)
|| (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null && mCurrentWebView
.getUrl().equals(Constants.URL_ABOUT_START))
|| (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null && mCurrentWebView
.getUrl().equals(Constants.URL_ABOUT_URL))
) {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
Toast.makeText(
this,
getResources().getString(R.string.press_again_exit),
Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
}
else {
//退出浏览器
//SplashActivity.removeView();
HomeActivity.this.finish();
}
} else if (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null
&& (!mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)
)) {
//modfiy by yanggf
// navigateToHome();
// updateUI();
if(!mCurrentWebView .canGoBack()&& !mCurrentWebView.getUrl().equals(Constants.URL_ABOUT_URL)){
removWebView(selectePosition, mCurrentWebView);
setSelecteLabelPage();
}else if (mCustomView != null) {
hideCustomView(false);
} else if (mFindDialogVisible) {
closeFindDialog();
} else {
if (mCurrentWebView.canGoBack()) {
isNeedLoadHide = true;
mCurrentWebView.goBack();
mCurrentWebView.doOnResume();
} else {
this.moveTaskToBack(true);
}
}
return true;
} else if (mUrlEditText.getText().equals("")
|| mUrlEditText.getText() == null) {
if(!mCurrentWebView .canGoBack()&&mWebViews.size()>1){
removWebView(selectePosition, mCurrentWebView);
setSelecteLabelPage();
}else{
navigateToHome();
updateUI();
}
return true;
}
return true;
}
else {
String volumeKeysBehaviour = PreferenceManager
.getDefaultSharedPreferences(this).getString(
Constants.PREFERENCES_UI_VOLUME_KEYS_BEHAVIOUR,
"DEFAULT");
if (!volumeKeysBehaviour.equals("DEFAULT")) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (volumeKeysBehaviour.equals("SWITCH_TABS")) {
showPreviousTab(false);
} else if (volumeKeysBehaviour.equals("SCROLL")) {
mCurrentWebView.pageDown(false);
} else if (volumeKeysBehaviour.equals("HISTORY")) {
mCurrentWebView.goForward();
mCurrentWebView.doOnResume();
} else {
mCurrentWebView.zoomIn();
}
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
if (volumeKeysBehaviour.equals("SWITCH_TABS")) {
showNextTab(false);
} else if (volumeKeysBehaviour.equals("SCROLL")) {
mCurrentWebView.pageUp(false);
} else if (volumeKeysBehaviour.equals("HISTORY")) {
mCurrentWebView.doOnResume();
mCurrentWebView.goBack();
} else {
mCurrentWebView.zoomOut();
}
return true;
default:
return super.onKeyDown(keyCode, event);
}
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
/*case KeyEvent.KEYCODE_BACK:
if (mCurrentWebView == null)
return true;
if (mCurrentWebView != null
&& mCurrentWebView.getUrl() != null
&& !mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)) {
if (mCustomView != null) {
hideCustomView(false);
} else if (mFindDialogVisible) {
closeFindDialog();
} else {
if (mCurrentWebView.canGoBack()) {
isNeedLoadHide = true;
mCurrentWebView.goBack();
mCurrentWebView.doOnResume();
} else {
this.moveTaskToBack(true);
}
}
} else if ((mCurrentWebView.getUrl() != null
&& !mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START) && !mCurrentWebView
.canGoBack())) {
removWebView(selectePosition, mCurrentWebView);
setSelecteLabelPage();
// navigateToHome();
// updateUI();
// setAddNewPageSize();
}
return true;*/
case KeyEvent.KEYCODE_SEARCH:
if (!mFindDialogVisible) {
showFindDialog();
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
String volumeKeysBehaviour = PreferenceManager
.getDefaultSharedPreferences(this).getString(
Constants.PREFERENCES_UI_VOLUME_KEYS_BEHAVIOUR,
"DEFAULT");
if (volumeKeysBehaviour.equals("DEFAULT")) {
return super.onKeyUp(keyCode, event);
} else {
return true;
}
default:
return super.onKeyUp(keyCode, event);
}
}
/**
* Set the application title to default.
*/
private void clearTitle() {
this.setTitle(getResources().getString(R.string.ApplicationName));
}
/**
* Update the application title.
*/
private void updateTitle() {
String value = mCurrentWebView.getTitle();
if ((value != null) && (value.length() > 0)) {
this.setTitle(String.format(
getResources().getString(R.string.ApplicationNameUrl),
value));
} else {
clearTitle();
}
}
/**
* Get a Drawable of the current favicon, with its size normalized relative
* to current screen density.
*
* @return The normalized favicon.
*/
private BitmapDrawable getNormalizedFavicon() {
BitmapDrawable favIcon = new BitmapDrawable(getResources(),
mCurrentWebView.getFavicon());
if (mCurrentWebView.getFavicon() != null) {
int imageButtonSize = ApplicationUtils.getImageButtonSize(this);
int favIconSize = ApplicationUtils.getFaviconSize(this);
Bitmap bm = Bitmap.createBitmap(imageButtonSize, imageButtonSize,
Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bm);
favIcon.setBounds((imageButtonSize / 2) - (favIconSize / 2),
(imageButtonSize / 2) - (favIconSize / 2),
(imageButtonSize / 2) (favIconSize / 2),
(imageButtonSize / 2) (favIconSize / 2));
favIcon.draw(canvas);
favIcon = new BitmapDrawable(getResources(), bm);
}
return favIcon;
}
/**
* Update the "Go" button image.
*/
boolean isDelet = false;
private void updateGoButton() {
System.out.println("mCurrentWebView.isLoading()----"
mCurrentWebView.isLoading());
if (mCurrentWebView.isLoading()) {
delectView.setImageResource(R.drawable.searchdelete);
isDelet = true;
} else {
// if
// (!mCurrentWebView.isSameUrl(mUrlEditText.getText().toString())) {
// // delectView.setBackgroundResource(R.drawable.ic_btn_go);
// } else {
// System.out.println("11111111111111111");
delectView.setImageResource(R.drawable.refleshbutton);
isDelet = false;
// }
}
}
//
/**
* Update the fav icon display.
*/
public void updateFavIcon() {
BitmapDrawable favicon = getNormalizedFavicon();
if (mCurrentWebView.getFavicon() != null) {
mUrlEditText.setCompoundDrawablesWithIntrinsicBounds(favicon, null,
null, null);
// mToolsButton.setImageDrawable(favicon);
// delectView.setImageDrawable(favicon);
} else {
mUrlEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
null, null);
// delectView.setImageDrawable(null);
// mToolsButton.setImageResource(R.drawable.fav_icn_default_toolbar);
}
}
/**
* Update the UI: Url edit text, previous/next button state,...
*/
public void updateUI() {
mCurrentWebView.doOnResume();
// mUrlEditText.removeTextChangedListener(mUrlTextWatcher);
if (mCurrentWebView.getTitle() == null) {
mUrlEditText.setText(mCurrentWebView.getUrl());
} else {
mUrlEditText.setText(mCurrentWebView.getTitle());
}
mUrlEditText.setTag(mCurrentWebView.getUrl());
// mUrlEditText.addTextChangedListener(mUrlTextWatcher);
mNextButton.setEnabled(mCurrentWebView.canGoForward());
mProgressBar.setProgress(mCurrentWebView.getProgress());
//非主页的时候
if (mCurrentWebView.getUrl() != null
&& (!mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_URL) )){
setPreviousBackground(true);
mPreviousButton.setEnabled(true);
//主页的时候
}/*else if(mCurrentWebView.getUrl() != null
&& (mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_URL))){
mPreviousButton.setEnabled(false);
setPreviousBackground(false);
}*/
else{
mPreviousButton.setEnabled(mCurrentWebView.canGoBack());
setPreviousBackground(mCurrentWebView.canGoBack());
}
setNextBtnBackground(mCurrentWebView.canGoForward());
updateGoButton();
updateTitle();
updateFavIcon();
}
private boolean isSwitchTabsByFlingEnabled() {
return (mSwitchTabsMethod == SwitchTabsMethod.FLING)
|| (mSwitchTabsMethod == SwitchTabsMethod.BOTH);
}
//
// private boolean isSwitchTabsByButtonsEnabled() {
// return (mSwitchTabsMethod == SwitchTabsMethod.BUTTONS) ||
// (mSwitchTabsMethod == SwitchTabsMethod.BOTH);
// }
/**
* Open the "Add bookmark" dialog.
*/
private void openAddBookmarkDialog() {
if (HomeActivity.INSTANCE.mCurrentWebView != null
&& !HomeActivity.INSTANCE.mCurrentWebView.getUrl().equals(
Constants.URL_ABOUT_START)) {// 是主页
Intent i = new Intent(this, EditBookmarkActivity.class);
i.putExtra(Constants.EXTRA_ID_BOOKMARK_ID, (long) -1);
i.putExtra(Constants.EXTRA_ID_BOOKMARK_TITLE,
mCurrentWebView.getTitle());
i.putExtra(Constants.EXTRA_ID_BOOKMARK_URL,
mCurrentWebView.getUrl());
startActivity(i);
}
}
/**
* Open the bookmark list.
*/
private void openBookmarksHistoryActivity() {
Intent i = new Intent(this, BookmarksHistoryActivity.class);
startActivityForResult(i, OPEN_BOOKMARKS_HISTORY_ACTIVITY);
}
/**
* Open the download list.
*/
private void openDownloadsList() {
// Intent i = new Intent(this, DownloadsListActivity.class);
// startActivityForResult(i, OPEN_DOWNLOADS_ACTIVITY);
Intent i = new Intent(this, DownloadActivity.class);
startActivityForResult(i, OPEN_DOWNLOADS_ACTIVITY);
// startActivityForResult(new Intent(this, CaptureActivity.class), 0);
}
/**
* Open preferences.
*/
private void openPreferences() {
Intent preferencesActivity = new Intent(this, PreferencesActivity.class);
startActivity(preferencesActivity);
}
public static boolean isLANDSCAPE = false;// 是横屏吗
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 当前屏幕为横屏
isLANDSCAPE = true;
} else {
// "当前屏幕为竖屏"
isLANDSCAPE = false;
}
System.out.println("popMenu.isShow()===" popMenu.isShow());
// popMenu = new PopMenu(MainActivity.this, myHandler);
if (popMenu != null && popMenu.isShow()) {
popMenu.dismiss();
popMenu = new PopMenu(HomeActivity.this, handler);
popMenu.show(mToolMenuBtn);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
System.out.println("onActivityResult---------");
if (requestCode == OPEN_BOOKMARKS_HISTORY_ACTIVITY) {
if (intent != null) {
Bundle b = intent.getExtras();
if (b != null) {
if (b.getBoolean(Constants.EXTRA_ID_NEW_TAB)) {
addTab(false);
}
navigateToUrl(b.getString(Constants.EXTRA_ID_URL));
}
}
} else if (requestCode == OPEN_FILE_CHOOSER_ACTIVITY) {
if (mUploadMessage == null) {
return;
}
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
/*
* 友盟自动更新
*/
UmengUpdateListener updateListener = new UmengUpdateListener() {
@Override
public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo) {
switch (updateStatus) {
case 0: // has update
Log.i("--->", "callback result");
UmengUpdateAgent
.showUpdateDialog(HomeActivity.this, updateInfo);
break;
case 1: // has no update
Toast.makeText(HomeActivity.this, "没有更新", Toast.LENGTH_SHORT)
.show();
break;
case 2: // none wifi
Toast.makeText(HomeActivity.this, "没有wifi连接, 只在wifi下更新",
Toast.LENGTH_SHORT).show();
break;
case 3: // time out
Toast.makeText(HomeActivity.this, "请求超时", Toast.LENGTH_SHORT)
.show();
break;
case 4: // is updating
/*
* Toast.makeText(mContext, "正在下载更新...", Toast.LENGTH_SHORT)
* .show();
*/
break;
}
}
};
// 接收编辑消息页面保存之后的消息
class RefreshDataBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction().equals("search")) {
String url = intent.getStringExtra("url");
if (mCurrentWebView.isLoading()) {
mCurrentWebView.stopLoading();
} else if (!mCurrentWebView.isSameUrl(url)) {
navigateToUrl(url);
} else {
mCurrentWebView.reload();
}
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


支持(0) 盖楼(回复)