마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바스크립트 연동 코드 문의 드립니다.

0 추천

1. 우선 안드로이드 입니다.

webview = (WebView)findViewById(R.id.shopWebView);
WebSettings set = webview.getSettings();
webview.clearCache(true);
webview.setBackgroundColor(Color.TRANSPARENT);
set.setCacheMode(WebSettings.LOAD_NO_CACHE);
set.setJavaScriptEnabled(true);
set.setDomStorageEnabled(true);
webview.loadUrl(QuickstartPreferences.SHOP_LIST_URL);
webview.setWebViewClient(new ProxyWebViewClient());
webview.setWebChromeClient(new ProxyWebChromeClient());
myJavaScriptInterface = new MyJavaScriptInterface(ShopActivity.this, webview); //JavascriptInterface 객체화
webview.addJavascriptInterface(myJavaScriptInterface, "Android"); //웹뷰에 JavascriptInterface를 연결
webview.removeJavascriptInterface("Android");
 
@JavascriptInterface
public void test(final String test) {
   handler.post(new Runnable() {
      public void run() {
         // Show toast for a short time
         Log.d("test_", "test : " + test);
      }
   });
}

<a href="javascript:window.Android.test('테스트입니다');">test</a>
이렇게 작성하였으나, 
"Uncaught TypeError: Cannot read property 'test' of undefined"
이렇게 값이 나타납니다. 자바스크립트를 이용하여 안드로이드 코드를 돌리려고 하는데 에러가 나서 더 진행을 못 하고있네요. 어떤 문제가 있는건가요?
아무리 찾아봐도 문제를 모르겠네요... 이유 아시는 분 답변 부탁드려요ㅠ
익명사용자 님이 2019년 7월 18일 질문

1개의 답변

0 추천
window.  은 필요없지않나요?

저는 그냥 Android.foo(...) 로 쓰고있어요
Bateaux (5,200 포인트) 님이 2019년 7월 20일 답변
window를 지워도 동일하네요ㅠ
webview.removeJavascriptInterface("Android"); 때문 아닌가요?
네~ removeJavascriptInterface 이거때문이에요.

근데 이거 지웠더니 구글에서 경고 날라오고 앱이 삭제 되었네요.. 혹시 여기에 대해서는 어떻게 해야하나요?ㅠ
...