Android下载app完成后自动安装
来源:互联网 发布:天敏网络机顶盒应用 编辑:程序博客网 时间:2024/04/27 23:16
直接上代码了public class MainActivity extends Activity {private DownloadManager dowanloadmanager = null;private DownloadChangeObserver downloadObserver;private long lastDownloadId = 0;public static final Uri CONTENT_URI = Uri.parse("content://downloads/my_downloads");@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String serviceString = Context.DOWNLOAD_SERVICE;dowanloadmanager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);Uri uri = Uri.parse("http://filelx.liqucn.com/upload/2014/sheji/ms_hdl_daiji_lq_20140811.apk");Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdir();lastDownloadId = dowanloadmanager.enqueue(new DownloadManager.Request(uri).setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE| DownloadManager.Request.NETWORK_WIFI).setAllowedOverRoaming(false).setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "test.apk"));registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));downloadObserver = new DownloadChangeObserver(null);getContentResolver().registerContentObserver(CONTENT_URI, true,downloadObserver);}class DownloadChangeObserver extends ContentObserver {public DownloadChangeObserver(Handler handler) {super(handler);// TODO Auto-generated constructor stub}@Overridepublic void onChange(boolean selfChange) {queryDownloadStatus();}}private BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// 这里可以取得下载的id,这样就可以知道哪个文件下载完成了。适用与多个下载任务的监听long myDwonloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);if (lastDownloadId == myDwonloadID) {try {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);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();Log.e("异常", "install error ", e);}}queryDownloadStatus();}};private void queryDownloadStatus() {DownloadManager.Query query = new DownloadManager.Query();query.setFilterById(lastDownloadId);Cursor c = dowanloadmanager.query(query);if (c != null && c.moveToFirst()) {int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));int reasonIdx = c.getColumnIndex(DownloadManager.COLUMN_REASON);int titleIdx = c.getColumnIndex(DownloadManager.COLUMN_TITLE);int fileSizeIdx = c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);int bytesDLIdx = c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);String title = c.getString(titleIdx);int fileSize = c.getInt(fileSizeIdx);int bytesDL = c.getInt(bytesDLIdx);// Translate the pause reason to friendly text.int reason = c.getInt(reasonIdx);StringBuilder sb = new StringBuilder();sb.append(title).append("\n");sb.append("Downloaded ").append(bytesDL).append(" / ").append(fileSize);// Display the statusLog.d("tag", sb.toString());switch (status) {case DownloadManager.STATUS_PAUSED:Log.v("tag", "STATUS_PAUSED");case DownloadManager.STATUS_PENDING:Log.v("tag", "STATUS_PENDING");case DownloadManager.STATUS_RUNNING:// 正在下载,不做任何事情Log.v("tag", "STATUS_RUNNING");break;case DownloadManager.STATUS_SUCCESSFUL:// 完成Log.v("tag", "下载完成");// dowanloadmanager.remove(lastDownloadId);break;case DownloadManager.STATUS_FAILED:// 清除已下载的内容,重新下载Log.v("tag", "STATUS_FAILED");dowanloadmanager.remove(lastDownloadId);break;}}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();unregisterReceiver(receiver);getContentResolver().unregisterContentObserver(downloadObserver);}
0 0
- Android下载app完成后自动安装
- android在下载app后自动安装,安装完成后不会弹出打开或完成界面
- Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root)
- android 应用升级 下载安装包 完成后 自动安装apk文件
- android 应用升级 下载安装包 完成后 自动安装apk文件
- android apk下载完成后调用安装
- android中程序更新下载完成后自动跳转安装界面
- android app升级(下载)完毕后自动弹出安装界面的实现
- android端升级下载后如何自动安装并且有提示安装完成或打开,然后点击打开
- Android:下载更新后自动安装
- Android 7.0下载Apk后自动安装
- Android 7.0下载Apk后自动安装
- 兼容Android7.0自动安装 FileProvider 解决下载完成后无法自动安装
- Android 在线下载更新App 下载完成安装APK(兼容Android7.0)
- Android 自动更新APP时确定安装后没有显示安装完成页面
- 程序安装完成后自动运行
- 自动更新+下载后自动安装
- android版本过高导致下载软件后无法自动安装
- Spring整合Mybatis关键配置详解
- nyoj32
- 如何整理代码
- API Hook技术
- 关于base64编码解码(Android编码,JS解码,案例为解决安卓端H5页面的emoji表情显示问题)
- Android下载app完成后自动安装
- mysql命令行常用操作(linux环境)
- Android之使用RecyclerView异常情况
- Android提高第二篇之SurfaceView的基本使用
- windows 开机启动Bat文件
- Python 学习笔记 ——反射的应用
- Android的xml布局文件代码讲解(TextView控件)
- C语言 获取字符串的方法
- C#new和override的区别