您的位置:首页 > 其它

模拟APK版本更新

2016-07-03 10:46 197 查看
1、启动文件下载
public class DownloadApk {
public static long taskId = -1;//用于最终查询下载状态
public static DownloadManager manager;
public static String file_dir = "/Dowload/";//下载路径
public static String file_name = "yang_xiao_ru.html";//文件名字

public static void downLoad(final Context c, final String URLname) {
new Thread() {
@Override
public void run() {
String   sdDir = Environment.getExternalStorageDirectory()+"/";//获取跟目录
File file=new File(sdDir+file_dir+file_name);
if (file.exists()){
System.out.println("文件已经存在!");
file.delete();
System.out.println("文件已经删除");
}

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URLname));

request.setVisibleInDownloadsUi(true);//在状态栏可见
request.setDestinationInExternalPublicDir(file_dir, file_name);
manager = (DownloadManager) c.getSystemService(Context.DOWNLOAD_SERVICE);
if (manager == null) return;
//加入到下载队列
taskId = manager.enqueue(request);
}
}.start();
}

}
2、当系统下载器下载完成之后,会发送一个广播,我们接收并处理就行了
启动广播监听器:
private void initeReceiver() {receiver = new Dowload_ok_receiver();IntentFilter filter = new IntentFilter();filter.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE);registerReceiver(receiver, filter);}
//BroadcastReceiver 的具体实现
public class Dowload_ok_receiver extends BroadcastReceiver {private Context c;@Overridepublic void onReceive(Context context, Intent intent) {//下载结束系统就会发送一个广播c = context;DownloadManager.Query query = new DownloadManager.Query();query.setFilterById(DownloadApk.taskId);Cursor c = DownloadApk.manager.query(query);if (c.moveToFirst()) {int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));switch (status) {case DownloadManager.STATUS_SUCCESSFUL://下载完成System.out.println("文件下载成功");instal();break;default:System.out.println("文件下载失败");break;}}}private void instal() {Intent intent = new Intent(Intent.ACTION_VIEW);//        String name = "tencent/QQfile_recv/cet_4.apk";String name = DownloadApk.file_dir + DownloadApk.file_name;File file = new File(Environment.getExternalStorageDirectory() + "/" + name);if (file.exists()) {System.out.println("开始安装!");//            Uri uri = Uri.parse("file://" + DownloadApk.file_dir + DownloadApk.file_name);Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/" + name);intent.setDataAndType(uri, "application/vnd.android.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);c.startActivity(intent);} else {System.out.println("要安装的文件不存在!");}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: