android实现程序自动升级到安装示例分享(下载android程序安装包)
2023-06-13 09:15:16 时间
//程序下载升级zhouxiang
@JavascriptInterface
publicvoidUpdateCAECP(finalStringpath){
try{
AlertDialog.Builderbuilder=newBuilder((Context)obj);
builder.setMessage(“检测到有新版本发布,是否进行下载升级?”);
builder.setTitle("程序更新提示");
builder.setPositiveButton("升级",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacearg0,intarg1){
//TODOAuto-generatedmethodstub
m_pDialog=newProgressDialog((Context)obj);
m_pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
m_pDialog.setTitle("程序升级中");
m_pDialog.setMessage("正在下载最新版的CAECP,请等候…");
m_pDialog.setIcon(R.drawable.ic_launcher);
m_pDialog.setProgress(100);
m_pDialog.setIndeterminate(false);
//设置ProgressDialog是否可以按退回按键取消
m_pDialog.setCancelable(true);
m_pDialog.show();
newCAECP_DownloadFile(m_pDialog,(Context)obj).execute(path);
}
});
builder.setNegativeButton("取消",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
dialog.dismiss();
}
});
builder.create().show();
}catch(Exceptione){
Alert("升级提示",e.getMessage(),"确认");
}
}
//zhouxiang文件下载百分比及自动安装
publicclassCAECP_DownloadFileextendsAsyncTask{
ProgressDialogm_pDialog=null;
Stringpath="/sdcard/caecp/caecp.apk";
staticStringchattemp="/sdcard/caecp/chat.caecp";
staticStringusertemp="/sdcard/caecp/user.caecp";
Contextobj;
CAECP_DownloadFile(ProgressDialogm_pDialog2,Contextobj2){
m_pDialog=m_pDialog2;
obj=obj2;
}
@Override
protectedStringdoInBackground(String…sUrl){
try{
URLurl=newURL(sUrl[0]);
URLConnectionconnection=url.openConnection();
connection.connect();
intfileLength=connection.getContentLength();
InputStreaminput=newBufferedInputStream(url.openStream());
OutputStreamoutput=newFileOutputStream(path);
bytedata[]=newbyte[1024];
longtotal=0;
intcount;
while((count=input.read(data))!=-1){
total+=count;
m_pDialog.setProgress((int)(total*100/fileLength));
output.write(data,0,count);
}
output.flush();
output.close();
input.close();
DownCAECP_Ok();
}catch(Exceptione){
}
returnnull;
}
//下载CAECP文件完成,启动新线程,调用系统进行安装
publicvoidDownCAECP_Ok(){
newThread(){
publicvoidrun(){
Intenti=newIntent(Intent.ACTION_VIEW);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.parse("file://"+path),"application/vnd.android.package-archive");
obj.startActivity(i);
}
}.start();
}
相关文章
- android onresume函数,Android界面跳转时候onDestroy和onResume的调用顺序
- android 浏览器 开发,Android 浏览器的开发实例分享
- android sdk manager安装,Android SDK Manager安装过程
- Android Studio安装教程(超级详细)「建议收藏」
- undefined pthread_create_android studio has stopped
- android spi读写不通,msm8909+android5.1.1 由BLSP3改为BLSP1后SPI读写速度慢问题解决
- android调用相册并显示图片_Android获取相册列表
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )
- 【错误记录】Android Studio 中 build.gradle 配置 buildFeatures prefab 错误处理 ( AS 4.1 以上开发环境 | Gradle及插件版本 )
- 【Android 逆向】IDA 安装 ( 使用 IDA 分析 so 动态库 )
- 【Android 插件化】VirtualApp 源码分析 ( 安装应用源码分析 | HomePresenterImpl 添加应用 | AppRepository.addVirtualApp )
- 【错误记录】编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )
- Android获取手机中外置内存卡、内置内存卡、手机内存路径详解手机开发
- Android开发学习总结(四)——Eclipse在线安装ADT插件详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- 在Android模拟器上模拟GPS功能总是null的解决方法
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出androidapk)
- Android和IOS的浏览器中检测是否安装某个客户端的方法