ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android Version Check Thread 안드로이드 버전 체크하기
    프로그래밍/Android 2016. 8. 4. 13:04
    반응형

    안드로이드 버전 체크하기


    작동 방식은 HttpURLConnectoin 클래스를 이용하여 웹에서 버전 정보를 불러온 다음 안드로이드 어플리케이션의 버전이랑 확인 후 다르면 자동으로 play store로 이동 시켜주는 클래스 입니다.


    질문은 댓글로 달아주세요!


    버전 파일

    version.txt

    1
    1.0
    cs


    Class GetVersionData.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
        // =======================================
        //   버전 정보 확인
        // =======================================
        public class GetVersionData implements Runnable {
            @Override
            public void run() {
                try {
                    URL url = new URL("버전 정보 파일 위치(네트워크)");
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    InputStream is = con.getInputStream();
                    BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("euc-kr")));
                    
                    if( 버전 변수(1.0) != Double.parseDouble(br.readLine())) {
                        // 버전이 다를 경우
                        currentActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                new AlertDialog.Builder(currentActivity.this)
                                        .setTitle("업데이트 필요!")
                                        .setMessage("프로그램을 최신 버전으로 업데이트 해주셔야 사용 가능합니다!")
                                        .setCancelable(false)
                                        .setPositiveButton("네"new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i) {
                                                currentActivity.this.runOnUiThread(new Runnable() {
                                                    @Override
                                                    public void run() {
                                                        final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
                                                        try {
                                                            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
                                                        } catch (android.content.ActivityNotFoundException anfe) {
                                                            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
                                                        }
                                                        currentActivity.this.finish();
                                                    }
                                                });
                                            }
                                        })
                                        .setNegativeButton("아니오"new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i) {
                                                currentActivity.this.runOnUiThread(new Runnable() {
                                                    @Override
                                                    public void run() {
                                                        Toast.makeText(currentActivity.this"프로그램을 종료합니다!", Toast.LENGTH_SHORT).show();
                                                        currentActivity.this.finish();
                                                    }
                                                });
                                            }
                                        })
                                        .show();
                            }
                        });
                    } else {
                        // 버전이 같을 경우
                        // 다음 액티비티 실행
                        currentActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Intent intent = new Intent(currentActivity.this, nextActivity.class);
                                startActivity(intent);
                                currentActivity.this.finish();
                            }
                        );
                    }
                } catch ( Exception e ) { }
            }
        }
    cs

    위의 클래스는 currentActivity 내부 클래스로 선언 했기 때문에 currentActivity.this 를 사용하였지만, 외부 클래스로 빼 낼 경우에는 currentActivity.this 대신에 new GetVersionData(Activity activity) 형식으로 받아 와서 대체 해주어야 합니다! 그래도 모르시겠다면 댓글 주세요!


    currentActivity.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class currentActivity extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.current_activity);
     
            Thread th = new Thread(new GetVersionData());
            th.start();
        }
    }
    cs


    currentActivity 와 nextActivity는 본인의 코드에 맞게 수정해주시면 됩니다.

    반응형

    댓글 0

Designed by Tistory.