SWDesk/App
웹뷰 내 사용자 클릭 결과를 처리하기 위한 자바 소스 코드
inhae
2023. 2. 26. 17:37
// WebView 내에서 URL 로드를 처리하기 위한 WebViewClient 클래스 정의
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 웹뷰 내에서 링크 클릭시 처리
if (url.startsWith("http:") || url.startsWith("https:")) {
view.loadUrl(url);
return false;
} else {
// 다른 URL 스키마에 대한 처리
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
}
// onCreate() 메소드 내에서 웹뷰 설정
WebView webView = findViewById(R.id.web_view);
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl("https://www.example.com");
// 웹뷰 내에서 사용자 클릭 결과를 가져오기 위한 WebViewClient 클래스 정의
private class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
// JavaScript에서 호출하는 alert() 함수를 처리
// message 변수에는 JavaScript에서 전달한 문자열이 저장되어 있음
// 이 메소드에서는 message 변수를 가지고 원하는 처리를 수행하면 됨
result.confirm();
return true;
}
}
// onCreate() 메소드 내에서 웹뷰 설정
WebView webView = findViewById(R.id.web_view);
webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new MyWebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://www.example.com");
위의 코드에서는 MyWebViewClient 클래스를 사용하여 웹뷰 내에서 URL 로드를 처리하고, MyWebChromeClient 클래스를 사용하여 JavaScript에서 호출하는 alert() 함수를 처리함.
alert() 함수에서 사용자가 클릭한 결과는 message 변수에 저장되어 있으며, 이 변수를 가지고 앱에서 필요한 처리를 수행하면 됨.
반응형