android 下载apk后如何安装程序,Android下载并安装APK
通过DownloadManager来下载APK到本地,下载完成后收到广播再安装APK,可用在软件更新等场合。
添加权限
Activity源码
package com.example.administrator.downloadtest;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btDownload = (Button) findViewById(R.id.bt_download);
btDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadApk();
}
});
/**注册下载完成广播**/
registerReceiver(downloadCompleteReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
/**下载APK**/
private void downloadApk() {
String apkUrl = "http://192.168.1.1/downloadtest.apk";
Uri uri = Uri.parse(apkUrl);
DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(uri);
// 设置允许使用的网络类型,这里是移动网络和wifi都可以
request.setAllowedNetworkTypes(request.NETWORK_MOBILE| request.NETWORK_WIFI);
//设置是否允许漫游
request.setAllowedOverRoaming(false);
//设置文件类型
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(apkUrl));
request.setMimeType(mimeString);
//在通知栏中显示
request.setNotificationVisibility(request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setTitle("download...");
request.setVisibleInDownloadsUi(true);
//sdcard目录下的download文件夹
request.setDestinationInExternalPublicDir("/download", "downloadtest.apk");
// 将下载请求放入队列
downloadManager.enqueue(request);
}
private BroadcastReceiver downloadCompleteReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
/**下载完成后安装APK**/
installApk();
}
};
private void installApk() {
Intent i = new Intent(Intent.ACTION_VIEW);
String filePath = "/sdcard/download/downloadtest.apk";
i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
startActivity(i);
}
}
android 下载apk后如何安装程序,Android下载并安装APK相关推荐
- java文件下载做apk安装包下载,当下载类型为.apk时,用手机谷歌浏览器下载完后点击打开不能直接启动安装,而是打开压缩文件管理。
java文件下载做apk安装包下载,当下载类型为.apk时,用手机谷歌浏览器下载完后点击打开不能直接启动安装,而是打开压缩文件管理. uc浏览器可以正常,自带的谷歌不正常,解决方法为,在下载设置res ...
- 计算机系统密码保护,安装程序需要密码、安装程序密码保护的方法
平时我们使用电脑的过程中,经常需要在网上下载安装一些软件.但是由于大家都懂的原因,现在各大软件厂家疯狂捆绑自己的软件,往往你本来只想安装一款软件,却强行捆绑安装了很多软件,而且还是偷偷在后台安装,导致 ...
- 此服务器不支持该安装程序,macOS 提示“不能安装该软件,因为当前无法从软件更新服务器获得” 解决方法...
原标题:macOS 提示"不能安装该软件,因为当前无法从软件更新服务器获得" 解决方法 有些小伙伴安装苹果开发者工具command line tools时,会提示"不能安 ...
- 计算机无法启动安装程序,电脑教程:win10安装程序无法正常启动
有不少用户反映自己在预约了Win10免费升级版后,因为没等到推送通知,便进行了手动升级,但在升级过程中却提示安装程序无法正常启动,需重启电脑.这该怎么办呢?接下来,小编就向大家分享安装Win10系统时 ...
- Wix安装程序中判断是否安装的.net framwork 4.5
Wix安装程序中判断是否安装的.net framwork 4.5 <PropertyRef Id="NETFRAMEWORK40FULL"/> <Property ...
- TomCat卸载之后重新装另一个版本的TomCat安装程序的进度条安装到三分之一显示安装失败!!!!!!!!
问题:TomCat卸载之后重新装另一个版本的TomCat安装程序的进度条安装到三分之一显示安装失败???? 原因:上一次安装的TomCat莫有卸载干净 解决办法: 方法一:打开命令行,输入regedi ...
- android打包apk不能安装程序,Android Studio 打包apk后应用未安装
本文转载地址 http://blog.csdn.net/sinat_14849739/article/details/76383281 前言 Android 要求所有 APK 必须先使用证书进行数字签 ...
- 安装android到u盘安装程序,在u盘内安装android教程
你们知道在u盘内安装android吗?现在我们可以在u盘内安装安卓系统,虽然非常多人是一无所知,但是小编今天肯定能教会你们在u盘内安装android,下面就让我们看看在u盘内安装安卓系统吧. ●教程第 ...
- 如何下载Office365离线安装程序包并手动安装?
如何下载Office365离线安装包并手动安装? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者 博客:https://blog.51cto.co ...
- android 在窗口中启动应用程序,Android中使用am命令实现在命令行启动程序详解
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. usage: am [subcommand] [options] start an Activity: ...
最新文章
- py 的 第 20 天
- vsftp的安装或升级
- LoaderManager使用详解(三)---实现Loaders
- Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
- 工作76::一直报400
- 陶瓷移动在飞信版C++女程序员
- 01背包问题--动规
- idea自动整理代码快捷键_MDK进阶使用教程,快捷启动任意软件,自动整理格式化代码,方便代码整理可以很好 的提高效率...
- tomcat ajp协议安全限制绕过漏洞_Apache tomcat 文件包含漏洞复现(CVE20201938)
- linux系统交叉编译如何打包,构建ARM Linux交叉编译器
- 数组的循环及跌送方式
- 自媒体文章采集工具,采集多个平台的文章
- php获取远程数据,教你如何用php实现LOL数据远程获取
- uboot源码修改之支持DM9000
- 批量修改图片尺寸,不用ps也可以
- 图解SpringMVC工作流程
- org.apache.ibatis.builder.IncompleteElementException:Could not find result map cn.lyp.entity.Book
- 工业设计公司如何进行家电设计创新?
- t检验 显著性检验 significance test
- 畜牧业适宜性评价算法
热门文章
- 多个版本的BIND DNS软件都存在一个严重漏洞
- 各家关节机器人示教器特点
- 惠普(HP) LaserJet Pro M1136 MFP 黑白多功能激光一体机 (打印 复印 扫描)驱动安装记录
- 软件设计师中级考试,软考
- 考计算机初级难不难,初级程序员好考吗_考试难不难_上学吧
- 2020-12-02HTML及标签
- python 怎么将数字转大写_python 数字转换为大写
- 固有模态函数IMF与经验模态分解EMD
- 计算机病毒扩散最快的是什么,根据统计,当前计算机病毒扩散最快的途径是( )...
- 移动充电宝市场需求的调研报告