티스토리 뷰

Mobile/Android

[Android]WebView Tip

out of coding 2016. 4. 5. 01:18

WebView관련된 Tip입니다.

그냥 다 알고 있으실 부분이긴 하지만, 참조하시길 바랍니다.


1. shoundOverrideUrlLoading에서 return 값의 처리.


true return시에는 자신이 다 처리한것, 아닐 경우에는 URL로딩을 시작


class MyWebViewClient extends WebViewClient {


@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {


if ( !url.startsWith("http") ) {

// true 를 리턴하면 onPageStarted/onPageFinished 는 호출되지 않는다.

return true;

}

// false 를 리턴하면 onPageStarted를 호출하게 된다.

return false;

}


@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

}


@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

}

}


2. DownloadListener 사용


webView.setDownloadListener(new DownloadListener() {

@Override

public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {


String[] fnm = url.split("/");

String fname = fnm[fnm.length - 1]; // 파일이름

String fhost = fnm[2]; // 도메인

DownloadManager mDownloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);

Uri uri = Uri.parse(url);

DownloadManager.Request mRequest = new DownloadManager.Request(uri);

// mRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); //NETWORK_MOBILE

// mRequest.setAllowedOverRoaming(false);

mRequest.setTitle(fname);

mRequest.setDescription(fhost);

mRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fname);

File pathExternalPublicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

pathExternalPublicDir.mkdirs();

mRequest.setShowRunningNotification(true);

mRequest.setVisibleInDownloadsUi(true);

long downloadId = mDownloadManager.enqueue(mRequest);

Toast.makeText(mContext, "Download Start.", Toast.LENGTH_SHORT).show();

}

});


3. 길게 탭하여 URL 가져오기


webView.setOnLongClickListener(new OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

WebView webView = (WebView) v;

WebView.HitTestResult hitTestResult = webView.getHitTestResult();

String url = hitTestResult.getExtra();

return false;

}

});


이렇게 하기는 하였지만, touch event등을 응용하여서 HitTestResult에서 값을 가져올 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함