2015년 2월 26일 목요일

[android] eclipse에서 html source보기

[첫번째 방법]

1. Help > Install New Software...

2. Work with : Juno - http://download.eclipse.org/releases/juno 선택합니다.
   예) Elipse INDIGO를 사용중이신 분은
              : Indigo - http://download.eclipse.org/releases/indigo

3. Name이 Web, XML, JAVA EE and OSGi Enterprise Development 앞에 화살표 선택합니다.

4. Web Page Editor 선택 후 설치합니다.

5. 이클립스 재부팅 후 html파일 오른쪽버튼 > Open With > HTML Editor


[두번째 방법]
1. 아래의 링크에서 jar파일을 다운로드 받습니다.
http://sourceforge.jp/projects/amateras/downloads/57710/tk.eclipse.plugin.htmleditor_2.2.0.jar/
2. eclipse\dropins 에 jar파일을 넣어줍니다.
3. 이클립스를 실행합니다


참고
http://blog.naver.com/PostView.nhn?blogId=kkson50&logNo=120168333385
http://egloos.zum.com/mcchae/v/10787968

[android] ClassNotFoundException

* 개인적인 보관용 글입니다. 

ClassNotFoundException에러가 발생 했을 경우

외부라이브러리를 추가 할 때 프로젝트에서
오른쪽 버튼 -> properties -> java Build Path -> Add JARs... 버튼을 선택해 추가한다.

이때 바로 옆에 Order and Export탭에 가보면 추가한 파일이 체크가 해제된 상태로 존재하는게 보일 것 이다.

그럼 체크를 해주고 다시 실행하면 위와 같은 에러가 발생하지 않을 것이다.

그래도 발생한다면 추가한 해당 파일을 맨 위로 올리고 다시 실행해보면 된다.

2015년 2월 25일 수요일

[android] 4대 컴포넌트 (Activity, Service, Broadcast Receiver, Content Provider)

android 4대 컴포넌트(Components)


1. Activity
 - UI화면을 구성
 - 하나의 어플리케이션에서 여러 Activity사용 가능

2. Service
 - background에서 실행되는 것
 예) 음악재생

3. Broadcase Receiver
 - 어플리케이션에서 특정 브로드캐스트를 수신했을 때 처리 가능
 예) wifi연결, 데이터 연결, sms 메시지 도착 등등

4. Content Provider
 - 어플리케이션 사이의 DATA를 공유

[android] android.os.NetworkOnMainThreadException

Honeycomb 이후부터 발생하는 에러.


원인 : Main Thread에서 네트워크 관련 작업을 할 경우.
해결방법 : AsyncTask나 Thread & Handler를 사용하여 다른 Thread에서 네트워크 관련 처리를 하도록 구현.


2014년 12월 4일 목요일

[android] 자바스크립트에서 함수 호출 및 자바스크립트 호출하기

[자바스크립트에서 안드로이드 함수 호출]

1. 인터페이스 클래스 생성
targetSdkVersion을 17이상이면 @JavascriptInterface를 꼭 추가해야한다.
추가하지 않으면 함수가 동작하지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class WebAppInterface {
    Context mContext;
    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }
    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

2. 웹뷰 생성 및 인터페이스 등록



1
2
3
4
5
6
7
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/testjavascript.html");


3. html파일에서 WebAppInterface클래스의 showToast함수 호출.


1
2
3
4
5
6
7
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>


4. Say hello버튼을 누르게 되면 'Hello Android!라는 토스트 메시지를 띄우게 된다.


[안드로이드에서 자바스크립트 함수 호출]

1. 안드로이드에서 호출
WebView명.loadUrl("javascript:함수명()");


1
mWebView.loadUrl("javascript:setViewAndroid()");


2. html파일 자바스크립트 함수 생성


1
2
3
4
5
<script type="text/javascript">
    function setViewAndroid() {
        // 내용
    }
</script>


[proguard 적용시 제대로 작동하지 않는다면!?]

아래의 내용을 추가해보자.

1
2
3
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}





[android] 고유값 생성하기.

UUID uuid = UUID.randomUUID();

2014년 12월 2일 화요일

[android] 폰과 태블릿 구분


1
2
3
4
5
6
7
8
9
10
boolean isTablet () { 
        int portrait_width_pixel=Math.min(this.getResources().getDisplayMetrics().widthPixels, this.getResources().getDisplayMetrics().heightPixels);
        int dots_per_virtual_inch=this.getResources().getDisplayMetrics().densityDpi;
        float virutal_width_inch=portrait_width_pixel/dots_per_virtual_inch;
        if (virutal_width_inch <= 2) {
            return false;
        } else {
           return true;
        }
    }