天天看點

安卓apk下載下傳安裝

在安卓中apk的安裝是調用第三方的一個類。利用意圖(Intent)來調用第三方的類:

例:在這裡是通過一個提醒框當點選“立即更新”時,進行下載下傳 在下載下傳中實作三個方法(下載下傳失敗、下載下傳中、下載下傳成功)在下載下傳成功的方法中調用一個安裝的方法 在安裝的方法中我們利用intent來實作安裝。

private void showUpdateDialog() {
		// TODO Auto-generated method stub
		AlertDialog.Builder builder = new Builder(this);
		builder.setTitle("更新提醒");
		builder.setMessage(description);
		builder.setPositiveButton("立刻更新", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int arg1) {
				// 進行更新操作
				if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
					FinalHttp finalHttp = new FinalHttp();
					finalHttp.download(apkurl, 
							Environment.getExternalStorageDirectory().getAbsolutePath() + "/mobilesafe2.0.apk", 
							new AjaxCallBack<File>() {

								@Override
								public void onFailure(Throwable t, int errorNo,
										String strMsg) {
									// 下載下傳失敗
									super.onFailure(t, errorNo, strMsg);
									Toast.makeText(getApplicationContext(), "下載下傳失敗", 1).show();
								}

								@Override
								public void onLoading(long count, long current) {
									// 正在下載下傳
									super.onLoading(count, current);
									//進度的百分比
									long progress = current * 100 / count;
									tv_showupdate_progress.setText("下載下傳進度:" + progress+ "%");
								}

								@Override
								public void onSuccess(File t) {
									// 下載下傳成功
									super.onSuccess(t);
									installApk(t);
								}

								private void installApk(File t) {
									// 安裝apk
									Intent intent = new Intent();
									intent.setAction("android.intent.action.VIEW");
           
//添加類型
									intent.addCategory("android.intent.category.DEFAULT");
									intent.setDataAndType(Uri.fromFile(t), "application/vnd.android.package-archive");
									startActivity(intent);
								}
						
							});
				} else {
					Toast.makeText(getApplicationContext(), "請檢查外部儲存設備是否安裝", 1).show();
				}
			}
		});
		builder.setNegativeButton("下次再說", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int arg1) {
				// 關閉對話框,進入主界面
				dialog.dismiss();
				enterHome();
			}
		});
		builder.show();
	}