Android DownloadManager下载并自动弹出安装

1.版本2.3以上

2. <uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>

只能贴代码,本想上传demo的,找不到地方

public class MainActivity extends Activity {

private Button mBut_download;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mBut_download = (Button)findViewById(R.id.mBut_download);

mBut_download.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

intoDownloadManager();

}

});

}

@SuppressLint("NewApi")

@TargetApi(Build.VERSION_CODES.GINGERBREAD)

private void intoDownloadManager(){

DownloadManager dManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

Uri uri = Uri.parse("http://dingphone.ufile.ucloud.com.cn/apk/guanwang/time2plato.apk");

Request request = new Request(uri);

// 设置下载路径和文件名

request.setDestinationInExternalPublicDir("download", "time2plato.apk");

request.setDescription("柏拉图新版本下载");

request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

request.setMimeType("application/vnd.android.package-archive");

// 设置为可被媒体扫描器找到

request.allowScanningByMediaScanner();

// 设置为可见和可管理

request.setVisibleInDownloadsUi(true);

long refernece = dManager.enqueue(request);

// 把当前下载的ID保存起来

SharedPreferences sPreferences = getSharedPreferences("downloadplato", 0);

sPreferences.edit().putLong("plato", refernece).commit();

}

}

public class DownLoadBroadcastReceiver  extends BroadcastReceiver {

@SuppressLint("NewApi")

public void onReceive(Context context, Intent intent) {

long myDwonloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

SharedPreferences sPreferences = context.getSharedPreferences("downloadplato", 0);

long refernece = sPreferences.getLong("plato", 0);

if (refernece == myDwonloadID) {

String serviceString = Context.DOWNLOAD_SERVICE;

DownloadManager dManager = (DownloadManager) context.getSystemService(serviceString);

Intent install = new Intent(Intent.ACTION_VIEW);

Uri downloadFileUri = dManager.getUriForDownloadedFile(myDwonloadID);

install.setDataAndType(downloadFileUri, "application/vnd.android.package-archive");

install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(install);        }

}

}

最后记者一定要注册广播

<receiver

android:name="com.example.apkdownloadmanager.DownLoadBroadcastReceiver">

<intent-filter>

<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />

</intent-filter>

</receiver>

时间: 2024-11-13 08:52:51

Android DownloadManager下载并自动弹出安装的相关文章

软件更新相关,使用utuils框架在线升级,显示progressDialog,下载完成后自动弹出安装界面。

使用utuils框架在线升级,显示progressDialog,下载完成后自动弹出安装界面. 1 private void updateDownload() { 2 //检测内存设备是否可用 3 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 4 //设置存储路径 5 final String targer = Environment.getExternalStorageDirectory

android Activity实现底部滑动弹出窗口及源码下载地址

在做微信.微博.qq等分享时,一般是点击分享按钮后会从底部弹出滑动窗口,然后选择要分享的社交平台进行分享.今日头条.腾讯新闻等内容App的评论也是从底部滑动弹出输入窗口,进行评论输入的.本篇文章就讲讲怎么通过Activity实现底部弹出滑动窗口的.实现效果是通过Animation功能实现的,效果如下: 源码下载地址 主要代码如下: 一.滑动窗口PopupShareActivity类 继承自Activity并实现了OnClickListener,方便处理Click事件.代码如下: public c

Android 禁止软键盘自动弹出

Android系统对EditText这个控件有监听功能,如果某个Activity中含有该控件,就会自动弹出软键盘让你输入,这个看似人性化的方案有 时候并不被用户喜欢的,所以在有些情况下要禁用该功能.这几天做的应用也有这个问题,所以就查了,网上大部分都是如下方法: <activity android:name=".MainActivity" android:screenOrientation="landscape" <span style="co

Android 禁止进入activity自动弹出键盘

在Manifest.xml中设定activity的属性 android:windowSoftInputMode="stateHidden|stateUnchanged" 附相关属性: "stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定.系统将选择一个合适的状态或依赖于主题的设置.这个是为了软件盘行为默认的设置. "stateUnchanged" 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时

Android SDK下载与安装

1.在安装Android SDK之前,先安装jdk. 2.Android SDK下载地址:http://tools.android-studio.org/index.php/sdk 根据自己的操作系统类型选择对应的版本.Windows系统推荐下载.exe安装包. 下载完成后,双击进行安装. 点击[finish]后会自动弹出Android SDK Manager.勾选以下红框部分. 安装完成,开始配置环境变量. 找到SDK安装目录 然后点击确定即可. 接着,找到系统变量中的[path],在变量最尾

推荐下载App,如果本地安装则直接打开本地App(Android/IOS)

推荐下载App,如果本地安装则直接打开本地App(Android/IOS) - 纵观现在每家移动网站,打开首页的时候,都有各种各样的形式来提示你下载自身的移动App(Android/IOS),这是做移动客户端产品的一个很好地引流的手段.当然各家引流下载的交互和视觉各不相同,有的是完全“强奸”用户,有的是完全取悦用户.但是最终的形式就是你点击一个按钮之后,可以去下载对应的App(Android直接下载对应的Apk文件,IOS会跳转到App store的对应地址). 之前开发这个需求的时候,就是很简

Android 4.4环境搭建——Android SDK下载与安装

学习开发Android应用程序,须要下载安装Android SDK.在Android的官方站点的二级域名http://developer.android.com/index.html中.能够下载到完整版本号的Android SDK,也能够下载到包括开发工具(带ADT插件的Eclipse)的最新版本号的Android SDK.在以下将具体介绍包括开发工具的最新版本号的Android SDK下载与安装的步骤. &  说明:在完整版本号的AndroidSDK中,包括了模拟器.教程.API文档.演示样例

Android 演示 DownloadManager 下载

本文内容 环境 项目结构 演示下载 参考资料 本文是 github 上 Trinea-common 和 Trinea-Demo 项目的一部分.(不知道此人攒了多久~ ) 假设,现在有个下载 apk 包的需求,你大概能想到什么? 下载本身: 下载进度: 期间还能取消: 由于网络不好或中断,下载失败,还要能重试: 因为下载的是 apk,下载完还要能提示安装更好,而且,很多手机管理 app,还能静默安装: 还能在手机通知栏看到下载提示: 这些就涉及到 android.app.DownloadManag

【转】Android 4.3源码的下载和编译环境的安装及编译

原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html  告诉windows用户一个不好的消息,windows环境下没法编译android源码.用cygwin?不行,因为cygwin模拟的环境太简单,编译android源码需要好多工具,比如gnupg flex bison gperf libsdl-dev libesd0-dev …有的环境还需要wine.单纯的cygwin肯定是不能满足需要的.那么windows环境