본문 바로가기

개발/Android 개발 주저리

[Android]안드로이드4.0(ICS) 간단 업데이트 체크 만들기

안드로이드4.0(Android 4.0) 일명 아이스크림센드위치 로 업데이트 되면서, 메인 스레드에서 "네트워크 및 파일작업" 이 불가능하게 바뀌었다.
효율적으로 보자면 네트워크 작업과 파일작업시 별도의 스레드를 띄워 하는게 메인 스레드에 부담이 덜될 수 있으니까.. 메인 스레드에서 처리를 안하니 문제가 생겨도 메인스레드는 죽지 않는다

어쨌든 4.0이하버전 에서 대부분(나만그런가?)메인스레드에서 처리했던 만큼, 4.0을 지원하기 위해선 구조를 약간 손봐주기만 하면된다( 이미 4.0 SDK가 나왔을때부터 애당초 그걸 염려하고 대부분 출시 했을테지만.. )

간단하게 txt 파일로 서버와의 버전을 비교하여 업데이트 체크 로직을 포팅해본다.
안드로이드를 하면서 블로그에 쓰는 첫포팅인듯.. 요즘 블로그를 잘안하니;;

1.스레드 생성

private class DownloadText extends Thread {

public void run() {

    StringBuilder text = new StringBuilder();

    text.append("");

    try{

    URL url = new URL("http://.../version.txt");

    HttpURLConnection conn = (HttpURLConnection)url.openConnection();

    if(conn != null)

    {

    conn.setConnectTimeout(1000); // 1초 동안 인터넷 연결을 실패할경우 Fall 처리

    conn.setUseCaches(false);

    if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){

    BufferedReader br = new BufferedReader(

    new InputStreamReader(conn.getInputStream()));

    for(;;){

    String line = br.readLine();

    if(line == null) break;

    text.append(line + "\n");

    }

    br.close();

    }

    conn.disconnect();

    }

   

    }

    catch(Exception ex){}

   

    result = text.toString();

}

}


URL에 저장된 경로의 서버에서  txt 의 내용을 읽어온다.
소켓을 개방하고 내용만을 추출하여 비교하면 끝

추출한 버전값을 result 에 저장하여 result 값과 자신의 어플리케이션 버전을 서로 체크하여, 업데이트 발견 Dialog 라던지 등을 띄우면된다

2.스레드 시작

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.about);

 

    DownloadText downloadtext = new DownloadText();

downloadtext.start();

 

apk 를 다운로드 받아 설치하는 것도 비슷한 형식이며, 다운받은 apk 바로 자동으로 설치하도록만 구성해주면 끝날듯 싶다.


일단 나는 마켓링크로 연결되게 구성해놓았으니 그건 각자 선택..
근데 마켓보단 그냥 apk를 바로 다운로드 하게 하는게 좋을꺼 같다.. 티스토어,마켓등 여러곳에 올렸을 경우에만


끝.. 뭐 틀린점이 있다면 지적좀...