출처 :  http://androi.tistory.com/9 

안드로이드 앱이 업그레이드가 되었는데도, 사용자들은 잘 확인하지도 않고, 설사 확인했다고 해도 큰 문제가 없으면 업데이트를 잘하지 않는다.


큰 노력과 수고없이, 앱 시작시 최신버젼을 확인하고  최신버젼이 있을 경우, 사용자에게 팝업을 띄우고, 업데이트 하는 방법을 알아보자.

1. 웹페이지에 최신 버젼을 표시
    간단하게 무료로 사용하고 싶으면 구글앱엔진을 추천한다. 그 외에 본인의 블로그 등을 사용해도 좋음
    ex)  http://checkappver.appspot.com/CheckBBVersion.html 

<html>
<body>
version:
1.11
</body>
</html>


2. 웹페이지의 html 파일을 가져와서 간단한 파싱으로 버젼 구하기

DownThread mThread;
String sVersion;  // 웹페이지에서 가져온 버젼이 저장됨

        // 웹서버에서 369 숫자야구 버젼 가져오기
mThread = new DownThread("http://checkappver.appspot.com/CheckBBVersion.html");
mThread.start();

         ...

class DownThread extends Thread {
String mAddr;
String mResult;

DownThread(String addr) {
mAddr = addr;
mResult = "";
}

public void run() {
StringBuilder html = new StringBuilder(); 
try {
URL url = new URL(mAddr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
if (conn != null) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
Boolean bVersion = false;
for (;;) {
String line = br.readLine();
if(bVersion){
mResult = line;
break;
}
if(line.equals("version:")){
bVersion = true;
}
if (line == null) break;
}
br.close();
}
conn.disconnect();
}
catch (Exception ex) {;}
mAfterDown.sendEmptyMessage(0);
}
}

Handler mAfterDown = new Handler() {
public void handleMessage(Message msg) {
// Toast.makeText(mContext, mThread.mResult, Toast.LENGTH_SHORT).show();
sVersion = mThread.mResult;
}
};

3. 현재 앱의 버젼 구하기
         나같은 경우는 리소스에 버젼을 넣고 불러서 확인 
               String sMyVersion = getResources().getString(R.string.check_version);


4. 현재 앱의 버젼과 웹페이지에서 가져온 버젼을 비교하기
           if(!sServerVersion.equals(sMyVersion)){ // 만약 서버와 버젼이 같지 않으면 업데이트 요청
           float fMyVersion = Float.parseFloat(sMyVersion);
           float fServerVersion = Float.parseFloat(sServerVersion);  // 서버 버젼이 클때만 업데이트 요청
           if(fServerVersion > fMyVersion){
           showDialog(9);
           }
           }


5. 최신 버젼이 있으면 팝업을 띄우고,  확인을 선택하면 해당 마켓으로 가기 
        ...
         case 9: // 업데이트 요청
            return new AlertDialog.Builder(mContext)
            .setTitle(R.string.str_updateinfo)
            .setMessage(R.string.str_updaterequestmsg)
            .setCancelable(true)
            .setPositiveButton(R.string.str_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                 bCheckVersionDialog = true;
                 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=dingdong.game.bb"));
             startActivity(intent);
                }
            })
            .setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                 bCheckVersionDialog = true;
                    /* User clicked cancel so do some stuff */
                }
            })
            .create();  

+ Recent posts