package com.llf.basemodel.utils; import android.app.DownloadManager; import android.content.Context; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.preference.PreferenceManager; /** * Created by llf on 2016/10/21. * apk文件下载工具 */ public class DownloadUtil { public static final String DOWNLOAD_APK_ID_PREFS = "download_apk_id"; public static void downloadApk(Context context, String url,String name,String description, String storeApk) { if (!isDownloadManagerAvailable()||!sdAvailable()) { return; } DownloadManager.Request request; try { request = new DownloadManager.Request(Uri.parse(url)); } catch (Exception e) { return; } request.setTitle(name); request.setDescription(description); //无线网状态下下载 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); //设置漫游状态下不下载 request.setAllowedOverRoaming(false); request.setMimeType("application/vnd.android.package-archive"); //HONEYCOMB版本是11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { //是否允许本MediaScanner扫描 request.allowScanningByMediaScanner(); //下载时在通知栏显示下载信息,下载完成后保留下载信息,用Request.VISIBILITY_VISIBLE,下载完成后不保留下载信息 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //指定下载后的存储位置 request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, storeApk); DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); long id = manager.enqueue(request); //存储下载的序列号,用于自动更新 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); sp.edit().putLong(DOWNLOAD_APK_ID_PREFS,id).apply(); } // SDK大于9才能使用DownloadManager private static boolean isDownloadManagerAvailable() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD; } //判断Sd卡是否可用 private static boolean sdAvailable(){ if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ return true; }else{ return false; } } }