您的位置:首页 > 移动开发 > Android开发

android APK更新主要代码

2016-01-12 10:23 357 查看
DownloadManager downloadManager;

/**下载APK**/

public void downloadApk(String apkUrl) {

if(apkUrl==null||!(apkUrl.startsWith("http://")||apkUrl.startsWith("https://"))){

toastMsg("下载地址出错了,可尝试到官网下载");

return;

}

Uri uri = Uri.parse(apkUrl);

if(downloadManager==null)

downloadManager = (DownloadManager) getSystemService(Service.DOWNLOAD_SERVICE);

DownloadManager.Request request = new DownloadManager.Request(uri);

// 设置允许使用的网络类型,这里是移动网络和wifi都可以

request.setAllowedNetworkTypes( DownloadManager.Request.NETWORK_MOBILE| DownloadManager.Request.NETWORK_WIFI);

//设置是否允许漫游

request.setAllowedOverRoaming(false);

//设置文件类型

MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();

String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(apkUrl));

request.setMimeType(mimeString);

//在通知栏中显示

request.setNotificationVisibility( DownloadManager.Request.VISIBILITY_VISIBLE);

request.setTitle(getResources().getText(R.string.app_name)+"下载中...");

request.setVisibleInDownloadsUi(true);

//sdcard目录下的download文件夹



File file=new File(LegworkApplication.mBasePath+"file");

if(!file.exists()){

file.mkdirs();

}

File file2=new File(file, "test.apk");

request.setDestinationUri(Uri.fromFile(file2));

// 将下载请求放入队列

downloadId= downloadManager.enqueue(request);

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

unregisterReceiver(downloadCompleteReceiver);

}

private long downloadId;

private BroadcastReceiver downloadCompleteReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

long reference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

if(downloadId==reference){

/**下载完成后安装APK**/

installApk();

}

}

};

private void installApk() {

Intent i = new Intent(Intent.ACTION_VIEW);

String filePath = getDownloadFileName();

i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");

startActivity(i);

}

private String getDownloadFileName(){

DownloadManager.Query query = new DownloadManager.Query();

query.setFilterById(downloadId);

Cursor c = downloadManager.query(query);

if(c.moveToFirst()) {

return c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));

}

return null;

}

/**注册下载完成广播**/

registerReceiver(downloadCompleteReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: