Android DownloadManager下载并自动弹出安装(转载)
来源:互联网 发布:c4d16软件安装 编辑:程序博客网 时间:2024/06/05 08:35
转载自:http://www.cnblogs.com/qstext/p/4527929.html
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");//备注(1)
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>
备注(1):
file是通过file.mkdir()创建的,这样如果上级目录不存在就会新建文件夹异常。所以下载前我们最好自己调用File的mkdirs方法递归创建子目录,如下:
否则,会报异常
- Android DownloadManager下载并自动弹出安装(转载)
- Android DownloadManager下载并自动弹出安装
- Android DownloadManager 下载完成并安装
- DownloadManager——Android 下载 apk 包并安装
- Android中使用DownloadManager下载并安装apk
- android -- 小功能 DownloadManager——Android 下载 apk 包并安装
- android -- 小功能 DownloadManager——Android 下载 apk 包并安装
- android 自带downloadManager下载apk文件,并打开安装包
- 通过DownloadManager来下载并静默安装APK
- Android下载APK并自动安装
- android下载新版本并更新(DownLoadManager、HttpURLConnection)
- Android 下载文件 DownloadManager
- Android 演示 DownloadManager 下载
- Android系统下载DownloadManager
- Android DownLoadManager 下载
- Android例子—使用DownloadManager更新应用并覆盖安装
- 导出Excel并自动弹出浏览器下载
- [Android开发] 使用DownloadManager下载
- 数据库设计三大范式
- 树、森林转化为二叉树
- 用swift写的计算器demo
- mysql常见错误
- Error contacting service. It is probably not running
- Android DownloadManager下载并自动弹出安装(转载)
- iOS即时通信用什么sdk
- SAP销项税多科目配置
- tree工具实现的源代码
- pycharm把.py文件识别成.text文件
- URL路由寻址的规则
- 请问IOS微信朋友圈的界面布局是怎么样的?
- PAT-乙级-1052
- 求在IOS上扫描PDF417的免费插件