`
yidongkaifa
  • 浏览: 4066313 次
文章分类
社区版块
存档分类
最新评论

下载完成后启动安装程序

 
阅读更多
思想:
进入程序的时候,首先先向后台服务器发送一个请求,服务器把现在服务器里面android应用程序版本号(更新版本),大小和下载网址一起发送过来.再把更新版本和本地版本进行比较,如果不相同,则进入更新,当把应用程序下载完成后,再用系统程序打开已经下载好的版本.由于应用程序大小只有2M左右,就没有用断点传送.
注意事项:
服务器里面更新版本应用程序必须和你手机里面应用程序使用的签名是一样了(否则下载下来和安装完成后,最后出现一个打开和完成时,只显示完成,没有打开,这样你的程序更新还是不成功)


/*从网络上把apk下下来*/
private void beginToDownloadAPK() {


if (isHasSDcard) {
apk = HttpUtils.getSDFileObject(LaunchActivity.this, APKNAME);
try {
URL url = new URL(urls);
try {


HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
InputStream is = conn.getInputStream();
FileOutputStream fos = new FileOutputStream(apk);
byte[] buffer = new byte[1024];
conn.connect();
int temp = -1;
int i = 1;
int download = 0;
int average = (int)(size / COUNTER);
if(conn.getResponseCode() >= 400){
Log.v("tag", "download apk out time");
}else{
while((temp = is.read(buffer)) != -1){
fos.write(buffer, 0, temp);
fos.flush();
download = download + temp;
if(download >= (average * i)){
handler.sendEmptyMessage(GET_DOWNLOAD);
i++;
}
}
}
conn.disconnect();
fos.close();
is.close();
downFinish();
} catch (IOException e) {
// TODO Auto-generated catch block
handler.sendEmptyMessage(GET_FAIL);
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}
/*下载完成后启动安装程序*/
private void openFile() {
// TODO Auto-generated method stub
Log.d("tag", apk.getAbsolutePath());
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(apk),
"application/vnd.android.package-archive");
startActivity(intent);
updateDownloadFinishPref();
}



运行程序,编译出一个apk文件,再创建出你自己的私钥,保留好你的私钥,留着给以后版本加上同样的私钥,这样你更新版本和现在版本就属于同一个私钥,就可以顺利更新.


创建私钥:
在ecplise里面在项目名右击,再点击Android Tools,再Export Android Application这个选项,就出现以下画面


点击next




因为是第一创建一个私钥.选择第二个,再选择一个放置私钥地方,输入密码.再点击next


按着你实际情况填好,再点击next一直下去,就已经创好一个私钥了.这时你的apk应用程序(1.0版本)已经导出放在一个目录下面,就可以把这个应用程序放在服务器中.


过了N久以后,你的应用程序有了更新,你先运行一下,再用你上面你已经保存好的私钥给你现在应用程序加上同样的私钥了.如下:
在ecplise里面在项目名右击,再点击Android Tools,再Export Android Application这个选项,出现这个画面时选择已经存在的私钥,也就是第一个选项


输入密码


再次输入上次你填的密码,再一直按着next,这样你的apk应用程序(2.0版本)就已经在你一个目录里面,你再把这个2.0版本放入服务器里面替代你以前1.0版本.
这样用户手机使用正在是1.0版本,通过查出你的版本是2.0,再用下载,就完全可以程序自动安装了.不会出现别的问题


如果出现包解析错误:
证明是你的包没有下完成.验证方法,可以手动跑到/sdcard下载目录下,把这个apk手动安装,如果失败,则证明的你的apk没有下完成.如果成功:有一个原因,你没有把apk包下载完就已经开始安装,就出现解析错误,等你手动跑到sd卡去安装时,你的包已经下载完成,此时你也想不通为什么包解析错误.


如果出现下载完并自动更新安装最后一步只有完成按钮没有打开这个按钮.
是你的私钥有问题,你现在版本和你下载版本不是同一个私钥,所以不能打开,.安装也是白安装了.
分享到:
评论

相关推荐

    安装程序检测到计算机重启的过程可能暂停解决工具.rar

    WINDOWS7系统在安装Framework 4.7时,遇到“安装程序监测到此计算机不满足完成此操作所需的条件。必须先解决一下产生的阻滞问题,然后才能继续”的问题时,可以使用本资源Framework4.7安装包及补丁来解决。请参考...

    sql重新启动后,再次安装时问题仍然存在挂起的解决办法

    sql重新启动后,再次安装时问题仍然存在挂起

    IIS自动安装程序5.1

    该自动安装程序最大程度简化了安装IIS的繁琐步骤,且无须操作系统光盘,直接双击即可自动完成安装,并自动注册asp.net运行环境(如果安装了.net),为基于IIS的软件开发和部署带来了极大的便利。  经过多重病毒...

    判断一个程序启动完成(不是结束)

    判断一个程序启动完成(不是结束) VB技术很实用的源码本人收集了一些技巧供大家参考,希望斑竹能多放一些时间。按字母或数字顺序排列列表框中的列表项. 将以下代码加入到你的程序中.

    用Delphi编写安装程序

    当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步,同时也是很重要的一步,因为运行安装程序往往是用户做的第一步操作。  很多报刊文章介绍了许多如何利用...

    IIS自动安装程序 For 2003

    该自动安装程序最大程度简化了安装IIS的繁琐步骤,且无须操作系统光盘,直接双击即可自动完成安装,并自动注册asp.net运行环境(如果安装了.net),为基于IIS的软件开发和部署带来了极大的便利。 与IIS相关的常见...

    欧姆龙PLC 的星三角换接启动控制的梯形图程序

    欧姆龙PLC 的星三角换接启动控制的梯形图程序

    MFC程序启动画面

    简单的MFC程序,完成程序启动时的启动画面效果

    ps资源下载及安装教程

    下载完成后,双击安装程序开始安装。在弹出的安装界面中,选择“安装”选项。 阅读并同意软件许可协议后,选择安装位置和相关选项。建议将Photoshop安装在非系统盘符下,以避免占用过多系统空间。 等待安装程序完成...

    Android程序静默安装安装后重新启动APP的方法

    主要介绍了Android 静默安装,安装后重新启动APP的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    任务计划管理程序V1

    程序下载:定时启动程序绿色版V1.2.rar 1: 定时启动程序的功能:到了指定时间,系统可以自动启动您的程序(或指定的网页) 2: 按类别查询待启动的程序列表 3:对待启动的程序可以进行动态设置 1)添加,修改,...

    Inno Setup 注册表启动项

    //注册表启动项 [Registry] Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "testrun"; ValueData: "{app}\{#MyAppExeName}" 这个可选段用来定义一些你想用...

    android 启动应用,不存在则下载,并在通知栏更新进度源码

    android 1.启动应用程序 2.不存在这个应用程序则进行下载 3.下载实时更新进度条 4.下载完成后直接启动安装

    程序启动加载画面C#源代码

    程序启动加载画面可以提供更好的用户体验,在程序启动时显示一个加载画面可以告诉用户程序正在加载,让用户知道程序正在做什么,从而避免用户长时间地等待程序启动。 此外,启动加载画面还可以用于显示一些提示信息...

    精彩编程与编程技巧-判断一个程序启动完成(不是结束)...

    精彩编程与编程技巧-判断一个程序启动完成(不是结束) ...

    安卓程序启动画面

    实现安卓程序启动画面的淡出动画效果,播放完成之后跳转到游戏主界面

    AI 代码生成工具 Cursor 安装程序

    安装完成后,您可以通过启动菜单中的“Cursor”快捷方式,或者在命令行中输入“cursor”来启动该工具。如果您没有使用过该工具,建议您先仔细阅读官方文档和教程,以便最大限度地发挥它的功能和效果。

    通用软件安装程序1.0

    你也可以为你的程序定制将创建的程序组标题及图标,方法是:启动Setup.exe,用鼠标选择"设置"按钮,这时屏幕显示程序组标题及快捷图标名称,可以修改这些标题名称,安装程序将自动保存这些设置,下次安装时将按照新...

    memtest86 u盘中文安装程序.rar

    软件介绍: emtest86 2.11 中文安装版采用syslinux引导,安装至BPR。格式化采用fat32格式。本软件自由传播随意修改,但不得用于商业用途。请在安装前保存好重要...安装完成后,重新启动,通过U盘启动就可以使用了

    vmware虚拟机安装教程.md

    1. 下载完成后,双击运行下载的 VMware Workstation 安装程序。 2. 如果系统提示权限问题,需要以管理员权限运行安装程序。 3. 安装程序会启动 VMware Workstation 的安装向导,根据提示进行操作。 4. 在安装过程中...

Global site tag (gtag.js) - Google Analytics