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

간단한 웹뷰를 띄웠는데..javascript가 안먹히는것같아요..

0 추천
$(document).ready(function(){
      if(localStorage.getItem("id") == null){
        if((getCookie("name") == "" || getCookie("password") == "") || getCookie("password") == "-1"){
          console.log("저장된 쿠키가 없습니다.");
          
          $('#logout').hide();
          location.href="login.html";
        }else{
          $('#login').hide();
        }
      }else{
        $('#login').hide();
      }	
}); 

이런식으로 메인 화면에서 로그인 화면으로 이동하는 코드를 작성했고,

실제로 인터넷창에서 띄울때는 문제없이 잘 됩니다..

그런데 웹뷰에 이 메인페이지까지의 주소(iis에 올려놓은 상태입니다.)를 기입했는데...

$('#login').hide(); <-이 부분이 처리도 안되고, 하드코딩으로 박아놓은것만 눈에 보이는 상황입니다..

네이버를 띄웠을때는 아무런 문제 없이 잘 됬는데..외부에서도 접속가능하게 포트까지 열어놓았고, 실제로 스마트폰에서도 접속이 가능합니다.. 그걸 앱으로 만들려고하는데..왜 안될까요?? 

(테스트 기기는 갤럭시S4입니다.)

또 타이틀바를 없애고싶어서 구글링했는데..Theme에다가 추가해주라고 하더라구여..근데도 없어지지가않네요.. 

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowNoTitle">true</item>
    </style>

</resources>

아래는 MainActivity.java 코드입니다.

public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView)findViewById(R.id.main_webView);
        webView.loadUrl("http://@@ip@@/test/index.html");
        //webView.loadUrl("http://m.naver.com");
        webView.getSettings().setBuiltInZoomControls(false);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new wvClient());
    }

    private class wvClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url){
            view.loadUrl(url);

            return true;
        }
    }
mellona (120 포인트) 님이 2017년 9월 1일 질문

1개의 답변

0 추천
webView.loadURL은 맨뒤로 옮기거나 onStart() 추가해서  맨 마지막에 위치해 주세요.

아래 메소드는 세팅 초반에 넣어 두는 것도 좋고요.

webview.clearFormData();
        webview.clearHistory();
        webview.clearCache(true);
Will Kim (43,170 포인트) 님이 2017년 9월 2일 답변
댓글 감사합니다 Will Kim님

webview.clearFormData();
webview.clearHistory();
webview.clearCache(true);
위의 이 메소드들을 setContentView다음에 적용해주었는데요..
앱 메인화면을 보지도 못하고, 중단되었습니다 라는 메세지를 띄우고 꺼져버립니다.....ㅠㅠ
onStart()는 이벤트 같은 개념인가요??
URL을 setWebViewClient() 다음으로 재배치 해주었는데 javascript가 먹히지 않는건 여전하네요....
앱 메인 화면을 보지도 못하고 중단된 경우라면, Manifest.xml에 MainActivity는 추가해 놓으셨죠? 전체 앱 명칭을 확인해 보세요.

앱이 뜨기도 전에 죽었다면, WebView의 문제가 아닐 수 있습니다.

웹뷰에 대한 옵션은 상당히 많습니다.
거기에 맞도록 세팅을 다양하게 할 수 있습니다.

가장 좋은 방법은 오픈소스 중에서 동작하는 것을 찾고 그 내용을 기반으로 프로젝트를 시작하거나, 아니면 기존 프로젝트에 해당 오프소스를 Copy & Paste를 통해서 붙여서 시작하는 것이죠. 먼저 오픈소스가 동작하는지 확인하고 시작해야 합니다.

시간을 들여서라도 최소 2종 이상의 오픈소스를 구동해 보고, 돌아가는 것 중에서 가장 좋은 오픈소스를 참고 하는게 좋습니다. 엉뚱한 것으로 시작하는 것은 나중에 엄청난 시간 손실을 가져옵니다.
...