WebView로 웹페이지에서 안드로이드 앱에 명령보내기
웹페이지가 안드로이드 앱에 명령을 보내는 방법은 WebViewClient의 shouldOverrideUrlLoading을 구현하는 것입니다. shouldOverrideUrlLoading은 WebView가 표시하는 웹페이지에서 발생하는 링크요청마다 호출되어 요청된 url을 어플리케이션이 처리할 지 WebViewClient가 렌더할 지를 결정할 수 있게 돕는 함수입니다.
다음 코드 블럭은 shouldOverrideUrlLoading을 구현한 예제입니다. 다음 예제의 WebView를 통해 표시된 웹페이지에 <a href='myservice://foo?action=1&option=2'>FOO</a>라는 링크를 클릭하면 다음 코드에서 ***라인을 실행하여 로그콘솔에 메세지를 출력하게 된다.
public static final String URL_HOOK_SCHEME = "myservice"; private WebView mWebView; @Override public void onCreate(Bundle bundle) { setContentView(R.layout.my_layout_with_webview); mWebView = findViewById(R.id.webview); mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri requested = Uri.parse(url); String scheme = requested.getScheme(); if (scheme != null && scheme.equals(URL_HOOK_SCHEME)) { Log.d("WebView", "overriden"); //*** return true; // true를 리턴하면 WebView는 해당 URL을 렌더하지 않는다. } else { return super.shouldOverrideUrlLoading(view, url); } } } }
필요에 따라 Host식별, Query Parameter를 추가 등을 통해 다양한 명령을 구현할 수 있다.














