package com.mysession;
import
java.util.ArrayList;
import
java.util.List;
import
Android.app.Activity;
import
Android.content.Intent;
import
Android.graphics.Bitmap;
import
Android.graphics.Canvas;
import
Android.graphics.Matrix;
import
Android.graphics.Picture;
import
Android.net.Uri;
import
Android.os.Bundle;
import
Android.util.Log;
import
Android.view.View;
import
Android.view.View.OnClickListener;
import
Android.
webkit.CookieManager;
import
Android.webkit.CookieSyncManager;
import
Android.webkit.DownloadListener;
import
Android.webkit.ValueCallback;
import
Android.webkit.WebChromeClient;
import
Android.webkit.WebHistoryItem;
import
Android.webkit.WebSettings;
import
Android.webkit.WebView;
import
Android.webkit.WebViewClient;
import
Android.widget.Button;
import
Android.widget.EditText;
import
Android.widget.GridView;
import
Android.widget.ProgressBar;
import com.mysession.model.HistoryModel;
public class D_sessionActivity extends Activity implements OnClickListener,
DownloadListener {
private static final String TAG = "TAG";
// private String detailUrl =
// "http://www.
google.com";
// private String detailUrl =
// "http://172.20.230.67:8900/iportal/servlet/GetMobileContent?;user=administrator;vol=allen_iServer;profile=myserver;pass
word=uaABd7AZ0ThXe6WFM2FdqA%3D%3D;respFormat=html;subID=7fb249ba-1470-4663-9863-a743c740aeeb;enc=1";
// private String detailUrl = "http://music.sogou.com/";
private WebView webview;
private Button btnLoad, btnReset, btnHistory, btnBack, btnForward;
private EditText etUrl;
private ProgressBar mProgressBar;
private GridView mGridView;
private CookieManager cookieManager;
private BrowserHistoryAdapter browserHistoryAdapter;
private List<HistoryModel> historyModels = new ArrayList<HistoryModel>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
webview = (WebView) findViewById(R.id.webView1);
btnLoad = (Button) findViewById(R.id.btnLoad);
btnReset = (Button) findViewById(R.id.btnReset);
btnHistory = (Button) findViewById(R.id.btnHistory);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
etUrl = (EditText) findViewById(R.id.etUrl);
btnBack = (Button) findViewById(R.id.btnBack);
btnForward = (Button) findViewById(R.id.btnForward);
mGridView = (GridView) findViewById(R.id.gridView1);
btnLoad.setOnClickListener(this);
btnReset.setOnClickListener(this);
btnHistory.setOnClickListener(this);
btnBack.setOnClickListener(this);
btnForward.setOnClickListener(this);
webview.getSettings().set
javaScriptEnabled(true);
webview.setWebViewClient(new BirtMobileWebViewClient());
webview.setWebChromeClient(new GeoClient());
webview.setDownloadListener(this);
webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
// WebBackForwardList history = webview.copyBackForwardList();
// if (history != null) {
// browserHistoryAdapter = new BrowserHistoryAdapter(history, this);
// mGridView.setAdapter(browserHistoryAdapter);
// }
webview.setVisibility(View.VISIBLE);
mGridView.setVisibility(View.GONE);
}
@Override
public void onClick(View v) {
if (v == btnLoad) {
cookieManager.setAcceptCookie(true);
webview.setVisibility(View.VISIBLE);
mGridView.setVisibility(View.GONE);
if (!"".equalsIgnoreCase(etUrl.getText().toString())) {
webview.loadUrl(etUrl.getText().toString());
}
} else if (v == btnReset) {
cookieManager.removeAllCookie();
} else if (v == btnHistory) {
if (webview.copyBackForwardList() == null) {
return;
} else {
webview.setVisibility(View.GONE);
mGridView.setVisibility(View.VISIBLE);
if (browserHistoryAdapter == null) {
browserHistoryAdapter = new BrowserHistoryAdapter(
historyModels, this);
mGridView.setAdapter(browserHistoryAdapter);
} else {
browserHistoryAdapter.setHostory(historyModels);
browserHistoryAdapter.notifyDataSetChanged();
}
}
} else if (v == btnBack) {
webview.goBack();
} else if (v == btnForward) {
webview.goForward();
}
}
// create a webview client that handles mailto links within the webview
private class BirtMobileWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("------redirect:-----", url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
etUrl.setText(url);
Log.d(TAG + "start:", url);
}
@Override
public void onPageFinished(WebView view, String url) {
HistoryModel historyModel = new HistoryModel();
// 获取浏览器history,包含id,name,url等
WebHistoryItem item = webview.copyBackForwardList()
.getCurrentItem();
//为browser history获取浏览器页面快照
Picture snapShot = view.capturePicture();
if (snapShot.getWidth() > 0 ;; snapShot.getHeight() > 0) {
Bitmap b = Bitmap.createBitmap(snapShot.getWidth(),
snapShot.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
snapShot.draw(c);
Bitmap newBitmap = zoomBitmap(b, 250, 250);
historyModel.setSnapshot(newBitmap);
// 写入
手机sd卡
// FileOutputStream fos = null;
// try {
// fos = new FileOutputStream("/sdcard/" + item.getTitle()
// + ".jpg");
// if (fos != null) {
// b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
// fos.close();
// }
// } catch (Exception e) {
//
// }
//
// b = BitmapFactory.decodeFile("/sdcard/" + item.getTitle()
// + ".jpg");
}
historyModel.setId(item.getId());
historyModel.setName(item.getTitle());
historyModel.setUrl(item.getUrl());
historyModels.add(historyModel);
Log.d(TAG + "finish:", url);
}
};
/**
* for #43616 from Hyron
*
* @author allen_fang
*
*/
private class GeoClient extends WebChromeClient {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
Android.webkit.GeolocationPermissions.Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
callback.invoke(origin, true, false);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
mProgressBar.setProgress(newProgress);
super.onProgressChanged(view, newProgress);
}
@Override
public void getVisitedHistory(ValueCallback<String[]> callback) {
super.getVisitedHistory(callback);
}
}
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
Log.d("--------------------------", mimetype);
Log.d("--------------------------", url);
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
public static Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {
int w = bitmap.getWidth();
int h = bitmap.getHeight();
Matrix matrix = new Matrix();
float scaleWidth = ((float) width / w);
float scaleHeight = ((float) height / h);
matrix.postScale(scaleWidth, scaleHeight);
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
return newbmp;
}
}