728x90
반응형
결과물
퍼미션 추가
<uses-permission android:name="android.permission.INTERNET"/>
Layout 소스 코드
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="5"
tools:context="org.codeman77.daumaddressapiex.MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4" />
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="Result" />
LinearLayout>
Activity 소스 코드
package org.codeman77.daumaddressapiex;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private TextView result;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = (TextView) findViewById(R.id.result);
// WebView 초기화
init_webView();
// 핸들러를 통한 JavaScript 이벤트 반응
handler = new Handler();
}
public void init_webView() {
// WebView 설정
webView = (WebView) findViewById(R.id.webView);
// JavaScript 허용
webView.getSettings().setJavaScriptEnabled(true);
// JavaScript의 window.open 허용
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
// JavaScript이벤트에 대응할 함수를 정의 한 클래스를 붙여줌
// 두 번째 파라미터는 사용될 php에도 동일하게 사용해야함
webView.addJavascriptInterface(new AndroidBridge(), "TestApp");
// web client 를 chrome 으로 설정
webView.setWebChromeClient(new WebChromeClient());
// webview url load
webView.loadUrl("http://codeman77.ivyro.net/getAddress.php");
}
private class AndroidBridge {
@JavascriptInterface
public void setAddress(final String arg1, final String arg2, final String arg3) {
handler.post(new Runnable() {
@Override
public void run() {
result.setText(String.format("(%s) %s %s", arg1, arg2, arg3));
// WebView를 초기화 하지않으면 재사용할 수 없음
init_webView();
}
});
}
}
}
php 소스 코드 ( ivyro.net에 무료 호스팅 이용 )
<?php
header("Content-Type: text/html; charset=UTF-8");
?>
<script src="http://dmaps.daum.net/map_js_init/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.zonecode, data.roadAddress, data.buildingName);
}
else{
window.TestApp.setAddress(data.zonecode, data.jibunAddress, data.buildingName);
}
}
}).open();
</script>
▶ 자세한 속성 값은 아래 URL 참고
http://postcode.map.daum.net/guide#attributes
출처: https://codeman77.tistory.com/55 [☆] _ 감사합니다. 꾸벅
728x90
반응형
'Android' 카테고리의 다른 글
ODsay SDK for Android 연결 방법 (Android Studio 기준) .aar 파일 (0) | 2019.10.15 |
---|---|
안드로이드 TextView 밑줄 만들기 (0) | 2019.10.12 |
카카오 로그인 ( 2019 .10 .4 ) (0) | 2019.10.04 |
Date Pick 속성 (0) | 2019.09.30 |
안드로이드 커스텀 스피너 ( 스피너에 이미지 넣기 ) (0) | 2019.09.28 |