티스토리 뷰
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에서 값을 가져올 수 있다.
'Mobile > Android' 카테고리의 다른 글
[Android] JobService (0) | 2016.07.26 |
---|---|
[Android]TextBold 적용 (0) | 2016.07.12 |
[Android]Layout에 View가 addView 되었을 경우 순서 (0) | 2016.01.07 |
[Android]adb명령으로 단말 해상도 변경하기 (2) | 2016.01.06 |
[AndroidStudio]편집창에 세로로 줄이 갈 경우 (3) | 2015.12.09 |
- Total
- Today
- Yesterday
- php
- CentOS
- centos8
- Gradle
- golang
- go
- windows10
- MySQL
- tomcat
- Python
- Codable
- rxswift
- github
- Kotlin
- ubuntu
- Java
- git
- Xcode
- docker
- intellij
- SWIFT
- Linux
- enum
- cocoapods
- war
- android
- Windows
- Spring
- ios
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |