Android APP는 브라우저를 통해 최신 버전을 다운로드합니다.

5041 단어 문제 해결
Android APP는 브라우저를 통해 최신 버전을 다운로드합니다.
우선 앱의 로컬 버전과 서버의 버전이 같은지 판단합니다.새로운 버전이 있으면 업데이트를 진행합니다.서버 측에서 두 개의 인터페이스를 제공해야 한다
  • 서버측 apk 버전 번호 가져오기
  • apk 주소
  • 1. 현재 앱의 버전 번호 가져오기
    /**
         *      
         *
         * @throws PackageManager.NameNotFoundException
         */
        public static String getVersionName(Context context) throws PackageManager.NameNotFoundException {
            //   packagemanager   
            PackageManager packageManager = context.getPackageManager();
            // getPackageName()        ,0         
            PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
            String version = packInfo.versionName;
            return version;
        }
    

    2. 버전 번호의 명칭에 따라 버전의 높낮이가 0이 같다는 것을 판단한다. 1은version1이version2보다 크고 -1은version1이version2보다 작다는 것을 의미한다.
      /**
         *      
         *0    ,1  version1  version2,-1  version1  version2
         * @param version1
         * @param version2
         * @return
         */
        public static int compareVersion(String version1, String version2) {
            if (version1.equals(version2)) {
                return 0;
            }
            String[] version1Array = version1.split("\\.");
            String[] version2Array = version2.split("\\.");
            int index = 0;
            //        
            int minLen = Math.min(version1Array.length, version2Array.length);
            int diff = 0;
            //          
            while (index < minLen
                    && (diff = Integer.parseInt(version1Array[index])
                    - Integer.parseInt(version2Array[index])) == 0) {
                index++;
            }
            if (diff == 0) {
                //        ,      
                for (int i = index; i < version1Array.length; i++) {
                    if (Integer.parseInt(version1Array[i]) > 0) {
                        return 1;
                    }
                }
     
                for (int i = index; i < version2Array.length; i++) {
                    if (Integer.parseInt(version2Array[i]) > 0) {
                        return -1;
                    }
                }
                return 0;
            } else {
                return diff > 0 ? 1 : -1;
            }
        }
    

    3. 서버에서 최신 버전 http 도구 클래스(HttpURLTOols)를 가져오면 Http 도구 클래스를 참조할 수 있습니다.
    Handler handlerapkVersion = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			super.handleMessage(msg);
    			Bundle data = msg.getData();
    			String strRet = data.getString("value");
    			if (strRet == null) {
    				UIHelper.showToast(LoginActivity.this, "     !");
    			} else {
    				try {
    					JSONObject json = new JSONObject(strRet);
    					String apkVersion = json.getString("versionnumber");
    					String apkVersion1 = UIHelper
    							.getVersionName(LoginActivity.this);//    app    
    					int result = UIHelper.compareVersion(apkVersion1,
    							apkVersion);
    					if (result == -1) { //       
    						showNoticeDialog();
    					}
    				} catch (JSONException | NameNotFoundException e) {
    					e.printStackTrace();
    				}
    			}
    
    		}
    	};
    
    	Runnable apkVersionTask = new Runnable() {
    		@Override
    		public void run() {
    			String strRet = null;
    			try {
    				strRet = HttpURLTools.sendHttpGet(GenBDB.strBaseURL
    						+ "apk/apkVersion");//           (  )
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			Message msg = new Message();
    			Bundle data = new Bundle();
    			data.putString("value", strRet);
    			msg.setData(data);
    			handlerapkVersion.sendMessage(msg);
    		}
    	};
    

    4. 팝업 다이어로그 힌트 업데이트 스타일은 자신의 요구에 따라 디자인할 수 있으며 안드로이드 다이어로그의 간단한 사용자 정의 레이아웃을 참조할 수 있습니다.
     private void showNoticeDialog() {
            android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(
            		LoginActivity.this);// Builder,     builder    AleartDialog               
            builder.setTitle("      ");
            String updateMsg = "       ,   !";
            builder.setMessage(updateMsg);
            builder.setPositiveButton("  ", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    openBrowserUpdate(GenBDB.strBaseURL
    						+ "gfjhgl.apk");
                }
            });
    
            builder.setNegativeButton("    ", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            Dialog noticeDialog = builder.create();
            noticeDialog.show();
        }
    

    5. 브라우저 다운로드 호출
    /**
         *             apk
         * @param apkUrl    apk  
         */
        private void openBrowserUpdate(String apkUrl) {
    
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            Uri apk_url = Uri.parse(apkUrl);
            intent.setData(apk_url);
            startActivity(intent);//     
    
        }
    

    일부 내용은android 구현 app 내부 검측 최신 버전 자동 업그레이드 최신 버전 안드로이드에서 브라우저 업데이트 앱 최신 버전 열기

    좋은 웹페이지 즐겨찾기