'프로젝트 > 최종 프로젝트' 카테고리의 다른 글
[Android] webview javascriptinterface 사용하기 (0) | 2018.12.12 |
---|
[Android] webview javascriptinterface 사용하기 (0) | 2018.12.12 |
---|
안드로이드에서 웹뷰를 이용해 웹 화면을 디바이스 화면에 구현할 수 있다.
상황에 따라 Native로 만드는 것보다 웹으로 만들어서 화면에 띄우는 게 나을 경우가 있다.
고객이 앱으로 주문 할 시 실제 도로명 주소를 사용해야한다.
Daum 우편번호 서비스 http://postcode.map.daum.net/guide
무료로 간편하게 사용할 수 있다.
---------------------------------------------------------------------------------------------
[프로젝트에 실제 적용한 모습]
---------------------------------------------------------------------------------------------
[Manifest.xml]
<activity
android:name=".DaumWebViewActivity"
android:theme="@android:style/Theme.Dialog" />
먼저 Manifest를 설정해준다.
Theme를 Dialog로 해서 Activity 변경이 아닌 Dialog 창으로 데이터를 주고 받는다.
[Activity.java]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//타이틀바 없애기
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_daum_web_view);
// WebView 초기화
init_webView();
// 핸들러를 통한 JavaScript 이벤트 반응
handler = new Handler();
}
public void init_webView() {
// WebView 설정
daum_webView = (WebView) findViewById(R.id.daum_webview);
// JavaScript 허용
daum_webView.getSettings().setJavaScriptEnabled(true);
// JavaScript의 window.open 허용
daum_webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
// JavaScript이벤트에 대응할 함수를 정의 한 클래스를 붙여줌
daum_webView.addJavascriptInterface(new AndroidBridge(), "TestApp");
// web client 를 chrome 으로 설정
daum_webView.setWebChromeClient(new WebChromeClient());
// webview url load. php 파일 주소
daum_webView.loadUrl(getString(R.string.server_addr) + "/spring/daum_address");
}
private class AndroidBridge {
@JavascriptInterface
public void setAddress(final String arg1, final String arg2, final String arg3) {
handler.post(new Runnable() {
@Override
public void run() {
//daum_result.setText(String.format("(%s) %s %s", arg1, arg2, arg3));
// WebView를 초기화 하지않으면 재사용할 수 없음
init_webView();
Log.d(TAG, "address1 : " + arg2);
Log.d(TAG, "address_building : " + arg3);
Intent intent = new Intent();
intent.putExtra("address1", arg2);
intent.putExtra("address_building", arg3);
setResult(1, intent);
finish();
}
});
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//바깥레이어 클릭시 안닫히게
if(event.getAction()==MotionEvent.ACTION_OUTSIDE){
return false;
}
return true;
}
[layout : activity_daum_web_view.xml]
<WebView
android:id="@+id/daum_webview"
android:layout_width="match_parent"
android:layout_height="450dp"
android:layout_weight="0" />
최종 프로젝트 영상 (0) | 2018.12.12 |
---|
1일차 (0) | 2018.10.02 |
---|
앱 만들고 실행할 때 앱 종료가 될 경우 확인해야할 사항 중 하나인데
추가할때
추가할 때 New - Activity-Empty Activity로 추가해야한다.
그래야 AndroidManifest.xml에 activity name이 적혀서 실행이 된다.
외부 프로젝트 다운받고 버전 맞추기 (에러 해결방법) (0) | 2019.02.11 |
---|---|
[에러 해결] AAPT2 에러 (0) | 2018.10.02 |
설치 (0) | 2018.09.28 |
uses-permission (권한 설정) 하는 코드 (0) | 2018.09.27 |