react로 만들어 둔 프로젝트를 안드로이드의 webview를 통해서 앱으로 만들려고 합니다.
url변경되는 것을 이벤트로 잡기 위해 webview에서 shouldOverrideUrlLoading( ) 함수를 사용하려고 하는데 해당 함수가 호출되지 않고 있습니다.
다른 만들어 뒀던 웹 프로젝트를 webview에 넣었을 때는 shouldOverrideUrlLoading( ) 함수가 정상적으로 호출되는데 유독 저 react로 만든 프로젝트를 webview에 넣었을 때만 호출이 안되는데 이유를 알 수 있을까요?
아래 소스코드 입니다. 실행하면 url변경될 때마다 로그에 url이 찍혀야 되는데 안나와요. API레벨은 28입니다.
public class MainActivity extends AppCompatActivity {
private static final String TAG = "JS_test";
private WebView wv_index;
private String url = "react 웹 프로젝트 주소";
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv_index = (WebView) findViewById(R.id.wv_index);
wv_index.getSettings().setJavaScriptEnabled(true);
wv_index.getSettings().setDomStorageEnabled(true);
wv_index.setWebChromeClient(new WebChromeClient());
wv_index.setWebViewClient(new WebViewClientClass());
wv_index.loadUrl(url);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode == KeyEvent.KEYCODE_BACK) && wv_index.canGoBack()){
wv_index.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private static class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
final Uri uri = request.getUrl();
String url = uri.toString();
Log.d(TAG+"shouldOver", url);
return super.shouldOverrideUrlLoading(view, request);
}
}
}