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 코드 입니다
-
(•́ ✖ •̀)
알 수 없는 사용자
- 공식가이드 페이지에 각 모드에 대한 설명이 있습니다. 코드조각도 있구욤 알 수 없는 사용자 2020.1.17 16:13
- http://postcode.map.daum.net/guide#sample 요기서 "레이어 띄우기"와 "페이지에 끼워넣기" 이 두개가 embed 이용하는 것이에욤. 컨트롤 하기에는 페이지 끼워넣기가 좀더 편할 수 있습니다. 알 수 없는 사용자 2020.1.17 16:14
-
댓글 입력