`
jiguansheng
  • 浏览: 127612 次
  • 性别: Icon_minigender_1
  • 来自: 九江
社区版块
存档分类
最新评论

自动更新apk

 
阅读更多

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.PublicKey;

import ist.angle.mobile.R;
import android.R.integer;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

public class DownLoadDialog extends AlertDialog {

	private ProgressBar barDownload;
	private TextView textProgress;
	private String PROGRESS ;
	private double size;
	int hasDowned = 0;
	private Context context;
	private File file ;
	private Handler handler = new Handler() {
		public void handleMessage(Message msg) {
			if (msg.what == 1) {
				hasDowned += msg.arg1;
				if (hasDowned == size) {
					barDownload.setProgress(100);
					textProgress.setText("下载已经完成!");
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					openFile();
					return ;
				}
				Log.d("downed", ""+hasDowned);
				int intProgress = (int) ((hasDowned / size) * 100);
				barDownload.setProgress(intProgress);
				textProgress.setText(String.format(PROGRESS, intProgress));
			}
		}
	};

	public DownLoadDialog(Context context) {
		super(context);
		show();
		this.context  = context;
        PROGRESS  =  context.getString(R.string.down_progress);
		View viewDown = LayoutInflater.from(context).inflate(
				R.layout.download_dialog, null);
		barDownload = (ProgressBar) viewDown.findViewById(R.id.bar_download);
		barDownload.setPressed(true);
		barDownload.setMax(100);
		textProgress = (TextView) viewDown.findViewById(R.id.text_progress);
		textProgress.setText(String.format(PROGRESS, 0));
		setContentView(viewDown);
		new Thread(new Runnable() {

			public void run() {
				HttpURLConnection connection = null;
				URL url;
				InputStream inputStream = null;
				FileOutputStream outputStream = null;
				try {
					url = new URL(
							"http://dl.91rb.com/a5495acfb55f94ce25ac3bcd4de49c55/android/soft/2011/11/2/d537810d27024249b7e6b41a8a413b17/com.diandian-11.apk");
					connection = (HttpURLConnection) url.openConnection();
					connection.setConnectTimeout(5000);
					connection.setDoInput(true);// 允许输入
					connection.setDoOutput(true);// 允许输出
					connection.setUseCaches(false); // 不允许使用缓存
					connection.setRequestMethod("GET");
					connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11");
					connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
					connection.connect();
					inputStream = connection.getInputStream();
				   
					file = new File("/sdcard/mobile_uwenke.apk");
					outputStream = new FileOutputStream(file);
					// 文件大小
					size = connection.getContentLength();
					
					byte[] buff = new byte[2048];
					int length = 0;
					while ((length = inputStream.read(buff)) != -1) {
						outputStream.write(buff,0,length);
						Message msg = new Message();
						msg.arg1 = length;
						msg.what = 1;
						handler.sendMessage(msg);
					}

				} catch (MalformedURLException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} finally {
					try {
						connection.disconnect();
						if (inputStream != null)
							inputStream.close();
						if (outputStream != null)
							outputStream.close();
					} catch (IOException e) {
						e.printStackTrace();
					}

				}

			}
		}).start();

	}

	private void openFile() {
		Intent intent = new Intent();
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		intent.setAction(android.content.Intent.ACTION_VIEW);
		intent.setDataAndType(Uri.fromFile(file),
				"application/vnd.android.package-archive");
		context.startActivity(intent);
	}

}
分享到:
评论

相关推荐

    适配Android高低版本自动更新apk安装

    在Android应用开发中,适配不同的系统版本是一项重要的任务,特别是在自动更新APK的过程中。本文将深入探讨如何解决Android10以下及以上的系统版本中,下载更新的APK自动安装失败的问题,为开发者提供实用的解决方案...

    demo.apk unity自动更新 内部安装Apk

    unity 内部更新Apk 自动安装 支持安卓8.0 以上 demo.apk 测试包

    自动更新apk,xamarin.android 对话框

    - 服务端提供版本信息和apk下载地址 - 客户端通过对比版本进行文件下载安装升级 # 客户端 ## 权限清单(AndroidManifest.xml) ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...

    Unity自动更新apk接入arr包 Demo 冷更新

    unity版本2021.3.26f

    Android自动更新的demo

    在Android开发中,实现应用的自动更新功能是提高用户体验、保证软件安全性和稳定性的关键步骤。这个"Android自动更新的demo"就是一个展示如何在Android应用中实现自动检查和下载更新的示例。以下是对这个主题的详细...

    android-APK自动更新.rar

    本文将深入探讨“android-APK自动更新.rar”这一资源中涉及的关键技术点,包括如何在Android 10.0和9.0系统上实现APK的自动更新,以及自动获取权限的相关策略。 一、Android APK自动更新机制 1. Google Play服务的...

    Android 自动更新 下载文件 APK

    本文将深入探讨如何实现Android应用程序的自动更新机制,特别是在下载APK文件方面。我们将基于名为"DownLoadDemo"的源代码实例进行讨论。 1. **Android权限设置**: 在AndroidManifest.xml文件中,需要添加必要的...

    实现不更新apk来更新app

    当有更新时,只需要更新服务器上的这些静态资源,用户打开应用即可自动获取最新版本,而不需要重新下载整个apk。 在实现这个功能时,通常会用到以下关键技术和工具: 1. **WebView组件**:Android系统内置的...

    Android 更新下载apk 安装apk 打开apk

    在Android平台上,更新、下载、安装以及打开APK文件是应用程序生命周期中的常见操作。下面将详细阐述这些过程及其相关的知识点。 一、Android APK文件 APK(Android Package)是Android系统中应用程序的安装包,...

    apk自动安装脚本

    自己写了一个脚本,代替91手机助手之类的安装,记得把adb目录加入到系统环境变量,脚本放在任何地方都行,apk拖到脚本上面自动安装~~~apk名字不能有中文

    用于unity Android 平台做apk自动更新Jar包.zip

    标题提到的"用于unity Android 平台做apk自动更新Jar包.zip"正是为了解决这一需求,它包含了一些关键的库文件,帮助开发者在Unity中构建apk的自动更新机制。 首先,我们来详细了解这两个重要的库文件: 1. **...

    Android 自动安装apk

    在Android平台上,自动安装APK是一项常见的操作,尤其对于开发者来说,这有助于快速测试和部署应用。本示例,"Android 自动安装apk",提供了一个DEMO,它允许用户无需手动操作即可安装APK文件。这个过程涉及到...

    自动解压APK lib生成Android.mk

    该脚本支持根据APK自动生成Android.mk和解压缩库,方便APK预制,支持armeabi,armeabi-v7a,arm64-v8a

    Android 应用软件自动更新源码.rar

    在Android应用开发中,自动更新功能是至关重要的,它能够帮助开发者及时修复程序中的错误,增加新特性,并确保用户始终使用的是最新版本的应用。"Android 应用软件自动更新源码"是一个示例项目,旨在教授如何在...

    php上传apk后自动提取apk包的信息DEMO

    以上就是PHP上传apk后自动提取apk包信息的基本流程。这个DEMO可以作为基础,根据实际需求进行扩展,例如处理更多类型的APK信息,或者将这些信息存入数据库、显示在网页上等。注意,为了安全起见,应对上传的文件进行...

    apk自动签名工具

    **Android APK 自动签名工具详解** 在Android应用开发过程中,APK文件是应用程序的最终打包形式,用户在设备上安装的应用都是APK文件。在发布APK之前,我们需要对其进行签名,以确保应用的安全性和完整性。本文将...

    云集自动.apk

    云集自动.apk

    APK自动静默安装并自动重新启动

    2. **ADB命令行**:通过USB连接设备,使用ADB工具,可以执行`adb install -r -g <apk_path>`命令,其中`-r`表示更新已存在的应用,`-g`表示授予所有权限。 ### 自动重新启动 当APK安装完成后,有时需要应用自动启动...

    Android实现下载APK文件并自动执行安装

    在Android平台上,实现从网络下载APK文件并自动执行安装是一个常见的需求,尤其在更新应用或者分发非市场应用时。这个过程涉及到多个步骤,包括网络请求、文件下载、权限处理以及安全检查。下面我们将详细讲解如何...

    c#自动打包APK

    本项目聚焦于如何利用C#来实现自动打包APK的过程,这对于开发者来说是一项非常实用的技术,能够提高工作效率,特别是对于需要频繁发布或更新应用的团队。 首先,我们需要了解C#如何与Android开发进行交互。这通常...

Global site tag (gtag.js) - Google Analytics