URL을 클릭하면 기본 브라우저가 열립니다.
외부 URL을 로드했습니다.WebView
이제 제가 필요한 것은 사용자가 로드된 페이지의 링크를 클릭할 때 일반 브라우저처럼 작동하고 동일한 링크를 열어야 한다는 것입니다.WebView
그런데 기본 브라우저를 열고 거기에 페이지를 로드하는 건가요?
JavaScript를 활성화했습니다.하지만 여전히 작동하지 않습니다.제가 뭘 잊었나요?
를 사용하는 경우WebView
기본 Android 동작을 원하지 않는 경우 직접 클릭을 차단해야 합니다.
의 이벤트를 모니터링할 수 있습니다.WebView
를 사용하여.당신이 원하는 방법은 입니다.이렇게 하면 특정 URL을 선택할 때 자신의 작업을 수행할 수 있습니다.
사용자가 설정합니다.WebViewClient
당신의WebView
방법을 사용합니다.
SDK에 있는 샘플을 보시면 원하는 것을 할 수 있는 예가 있습니다.다음과 같이 간단합니다.
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
경우에 따라 URL 로드 방법을 트리거하지 않는 리디렉션이 발생할 경우 onLoadResource를 재정의해야 할 수 있습니다.이 경우 저는 다음을 시도했습니다.
@Override
public void onLoadResource(WebView view, String url)
{
if (url.equals("http://redirectexample.com"))
{
//do your own thing here
}
else
{
super.onLoadResource(view, url);
}
}
공식 문서에 따르면 웹 뷰에서 링크를 클릭하면 URL을 처리하는 응용 프로그램이 실행됩니다.이 기본 동작을 재정의해야 합니다.
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
또는 방법에 조건부 논리가 없는 경우 이를 수행합니다.
myWebView.setWebViewClient(new WebViewClient());
코드에 이 두 줄을 추가합니다.
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
방법boolean shouldOverrideUrlLoading(WebView view, String url)
API 24에서 더 이상 사용되지 않습니다.새 장치를 지원하는 경우 사용해야 합니다.boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.
다음과 같은 작업을 수행하여 둘 다 사용할 수 있습니다.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newsItem.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
} else {
newsItem.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
Arulx Z의 대답은 바로 제가 찾던 것이었습니다.
하이퍼링크 클릭에 상관없이 앱 내부에서 웹 검색을 유지하기 위해(따라서 외부 웹 브라우저를 실행하지 않음) 재활용 보기 및 웹 보기가 있는 탐색 드로어로 앱을 작성하고 있습니다.이를 위해 다음 두 줄의 코드를 입력하면 충분합니다.
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
정확하게 웹뷰 문 아래에 있습니다.
다음은 구현된 WebView 코드의 예입니다.
public class WebView1 extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView wv = (WebView) findViewById(R.id.wv1); //webview statement
wv.setWebViewClient(new WebViewClient()); //the lines of code added
wv.setWebChromeClient(new WebChromeClient()); //same as above
wv.loadUrl("http://www.google.com");
}}
이렇게 하면 웹 사이트에서 클릭한 모든 링크가 웹 뷰 내부에 로드됩니다.(모든 SDK가 업데이트된 Android Studio 1.2.2 사용)
언급URL : https://stackoverflow.com/questions/2378800/clicking-urls-opens-default-browser
'prosource' 카테고리의 다른 글
jQuery 유효성 검사 플러그인을 사용한 라디오 버튼 그룹 유효성 검사 (0) | 2023.08.26 |
---|---|
SQL 쿼리 질문: SELECT... 입력 (0) | 2023.08.26 |
어떻게 하면 핀터레스트의 핀 잇 버튼을 렌더링할 수 있습니까? (0) | 2023.08.26 |
jQuery의 select2 ajax 호출에 매개 변수 전달 (0) | 2023.08.26 |
Android - 시작 프로그램 아이콘 크기 (0) | 2023.08.26 |