DownloadUtil

皮自明
2023-12-01

在apk版本升级的时候以前都是起一个service然后处理,偶然发现这个DownloadManager
网上百度了一下学习下
参考学习资料

http://www.jianshu.com/p/6816977bfdeb

单位项目中的工具类,感觉写的不好,先马克在这

public class DownloadUtil {

    private DownloadManager mDownloadManager;
    private Context mContext;
    private long downloadId;

    public DownloadUtil(Context context) {
        mContext = context;
    }

    public void download(String url) {
        final String packageName = "com.android.providers.downloads";
        int state = mContext.getPackageManager().getApplicationEnabledSetting(packageName);
        //检测下载管理器是否被禁用
        if (state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED
                || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
                || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
            AlertDialog.Builder builder = new AlertDialog.Builder(mContext).setTitle("温馨提示").setMessage
                    ("系统下载管理器被禁止,需手动打开").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    try {
                        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                        intent.setData(Uri.parse("package:" + packageName));
                        mContext.startActivity(intent);
                    } catch (ActivityNotFoundException e) {
                        Intent intent = new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
                        mContext.startActivity(intent);
                    }
                }
            }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            builder.create().show();
        } else {
            DownloadManager manager = (DownloadManager) mContext
                    .getSystemService(Context.DOWNLOAD_SERVICE);
            DownloadManager.Request request = new DownloadManager.Request(
                    Uri.parse(url));
            request.setTitle("丫丫学车下载中...");
            request.setDescription("");
            request.allowScanningByMediaScanner();// 设置可以被扫描到
            request.setVisibleInDownloadsUi(true);// 设置下载可见
            String fileName = url.substring(url.lastIndexOf("/"));// 解析fileName
            request.setDestinationInExternalPublicDir(
                    Environment.DIRECTORY_DOWNLOADS, fileName);// 设置下载位置,sdcard/Download/fileName
            long refernece = manager.enqueue(request);// 加入下载并取得下载ID
            SharedPreferences sPreferences = mContext
                    .getSharedPreferences("downloadplato", 0);
            sPreferences.edit().putLong("plato", refernece).commit();//保存此次下载ID
        }
    }

//    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
//        @Override
//        public void onReceive(Context context, Intent intent) {
//            checkStatus();
//        }
//    };

    /**
     * 检查下载状态
     */
//    private void checkStatus() {
//        mContext.unregisterReceiver(mReceiver);
//        DownloadManager.Query query = new DownloadManager.Query();
//        query.setFilterById(downloadId);
//        Cursor cursor = mDownloadManager.query(query);
//        if (cursor.moveToFirst()) {
//            int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
//            switch (status) {
//                //下载暂停
//                case DownloadManager.STATUS_PAUSED:
//                    break;
//                //下载延迟
//                case DownloadManager.STATUS_PENDING:
//                    break;
//                //正在下载
//                case DownloadManager.STATUS_RUNNING:
//                    break;
//                //下载完成
//                case DownloadManager.STATUS_SUCCESSFUL:
//                    File apkFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "yayaxueche.apk");
//                    PackageUtil.installAPK(mContext,apkFile);
//                    break;
//                //下载失败
//                case DownloadManager.STATUS_FAILED:
//                    Toast.makeText(mContext, R.string.DownLoadErr, Toast.LENGTH_SHORT).show();
//                    break;
//            }
//        }
//        cursor.close();
//    }

}

调用方式

DownloadUtil downloadUtil = new DownloadUtil(MainActivity.this);
                                downloadUtil.download(HttpUrlConstants.SERVER_RESOUSE_URL + url);

感觉还是

http://www.jianshu.com/p/6816977bfdeb

这个链接里边写的比较好一点
感觉downLoadManager不是很还用,不如起一个service


学习资料
http://www.jianshu.com/p/2c57efe49ef2

https://github.com/shuhaoSCode/AndroidUpdate
 类似资料:

相关阅读

相关文章

相关问答