前言
項(xiàng)目中有需求在APP的Webview中長(zhǎng)按圖片可以保存枕磁。后來(lái)就去研究一下該怎么實(shí)現(xiàn),順便整理了一下术吝。
WebView基本配置
mWvContent.getSettings().setJavaScriptEnabled(true);
mWvContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWvContent.getSettings().setDomStorageEnabled(false);
mWvContent.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
// 自適應(yīng)屏幕
mWvContent.getSettings().setUseWideViewPort(true);
mWvContent.getSettings().setLoadWithOverviewMode(true);
注冊(cè)ContextMenu
registerForContextMenu(mWvContent);
重寫(xiě)下面的方法即可保存圖片
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
super.onCreateContextMenu(contextMenu, view, contextMenuInfo);
final WebView.HitTestResult webViewHitTestResult = mWvContent.getHitTestResult();
if (webViewHitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
webViewHitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
contextMenu.setHeaderTitle("網(wǎng)頁(yè)中下載圖片");
contextMenu.add(0, 1, 0, "點(diǎn)擊保存")
.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
String DownloadImageURL = webViewHitTestResult.getExtra();
if (URLUtil.isValidUrl(DownloadImageURL)) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(DownloadImageURL));
request.allowScanningByMediaScanner();
//設(shè)置圖片的保存路徑
request.setDestinationInExternalFilesDir(WebViewActivity.this, "/img", "/a.png");
DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
downloadManager.enqueue(request);
Toast.makeText(WebViewActivity.this, "下載成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(WebViewActivity.this, "下載失敗", Toast.LENGTH_LONG).show();
}
return false;
}
});
}
}
需要添加相關(guān)權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
這樣就可以實(shí)現(xiàn)在Webview中長(zhǎng)按圖片點(diǎn)擊下載功能了计济。