webView 하얀 화면

조회수 1809회
public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private TextView txt_address;
    private Handler handler;

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

        txt_address = findViewById(R.id.txt_address);

        // WebView 초기화
        init_webView();

        // 핸들러를 통한 JavaScript 이벤트 반응
        handler = new Handler();
    }

    public void init_webView() {

        // WebView 설정
        webView = (WebView) findViewById(R.id.webView_address);

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
            }
        });

        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

        webView.setWebViewClient(new SslWebViewConnect());
        // JavaScript 허용
        webView.getSettings().setJavaScriptEnabled(true);

        // JavaScript의 window.open 허용
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        // JavaScript이벤트에 대응할 함수를 정의 한 클래스를 붙여줌
        webView.addJavascriptInterface(new AndroidBridge(), "TestApp");

        // web client 를 chrome 으로 설정
        webView.setWebChromeClient(new WebChromeClient());

        webView.getSettings().setDomStorageEnabled(true);

    }

    // webview url load. php 파일 주소
    // webView.loadUrl("http://naver.com");
    // 여기는 아래있는
    // php 주소를 넣었습니다.

    private class AndroidBridge {
        @JavascriptInterface
        public void setAddress(final String arg1) {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    txt_address.setText(String.format(arg1));

                    // WebView를 초기화 하지않으면 재사용할 수 없음
                    init_webView();
                }
            });
        }
    }

    public class SslWebViewConnect extends WebViewClient {

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed(); // SSL 에러가 발생해도 계속 진행!
        }

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;// 응용프로그램이 직접 url를 처리함
        }
    }
}

안녕하세요 이번에 다음 주소 API를 이용해서 주소를 검색하는 기능을 사용하려 하는데 안드로이드 스튜디오 디바이스에서는 잘 뜨는데 휴대폰으로 디버깅 하면 웹뷰가 하얀 화면으로만 나오네요 ..

휴대폰 버전은 8.0,6.0 이고 디바이스 버전은 9.0,8.0 으로 구동 해봤을때 휴대폰은 둘다 하얀 화면 이었고 디바이스는 둘다 작동이 됐습니다.

아래는 php 데이터를 넘겨주는 php 파일입니다.

<?php
header("Content-Type: text/html; charset=UTF-8");
?>

<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
new daum.Postcode({
    oncomplete: function(data) {
        if(data.userSelectedType=="R"){
            // userSelectedType : 검색 결과에서 사용자가 선택한 주소의 타입
            // return type : R - roadAddress, J : jibunAddress
            // TestApp 은 안드로이드에서 등록한 이름
            window.TestApp.setAddress(data.roadAddress);
        }
        else{
            window.TestApp.setAddress(data.jibunAddress);
        }        
    }
}).open();
</script>

1 답변

  •  <?php
    
    header("Content-Type: text/html; charset=UTF-8");
    
    ?>
    
    
    
    <script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
    
    <script>
    
    new daum.Postcode({
    
        oncomplete: function(data) {
    
            if(data.userSelectedType=="R"){
    
                // userSelectedType : 검색 결과에서 사용자가 선택한 주소의 타입
    
                // return type : R - roadAddress, J : jibunAddress
    
                // TestApp 은 안드로이드에서 등록한 이름
    
                window.TestApp.setAddress(data.roadAddress);
    
            }
    
            else{
    
                window.TestApp.setAddress(data.jibunAddress);
    
            }        
    
        }
    
    }).open();
    
    </script>
    

    지금 쓰고 있는 php 코드 입니다

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)