Android实现应用下载并自动安装apk包
来源:互联网 发布:js获取用户访问地区 编辑:程序博客网 时间:2024/05/16 10:08
安装:
String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDirectory() + str; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive"); startActivity(intent);
卸载:
Uri packageURI = Uri.parse("package:com.demo.CanavaCancel"); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);
下载部分:
protected File downLoadFile(String httpUrl) { // TODO Auto-generated method stub final String fileName = "updata.apk"; File tmpFile = new File("/sdcard/update"); if (!tmpFile.exists()) { tmpFile.mkdir(); } final File file = new File("/sdcard/update/" + fileName); try { URL url = new URL(httpUrl); try { HttpURLConnection conn = (HttpURLConnection) url .openConnection(); InputStream is = conn.getInputStream(); FileOutputStream fos = new FileOutputStream(file); byte[] buf = new byte[256]; conn.connect(); double count = 0; if (conn.getResponseCode() >= 400) { Toast.makeText(Main.this, "连接超时", Toast.LENGTH_SHORT) .show(); } else { while (count <= 100) { if (is != null) { int numRead = is.read(buf); if (numRead <= 0) { break; } else { fos.write(buf, 0, numRead); } } else { break; } } } conn.disconnect(); fos.close(); is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return file; }//打开APK程序代码private void openFile(File file) { // TODO Auto-generated method stub Log.e("OpenFile", file.getName()); Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(intent); }
完整代码:
package com.isufe.edu;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.TextView;import android.widget.Toast;public class DownloadActivity extends Activity {private String strURL = "";File file2 = new File(Environment.getExternalStorageDirectory() + "");private int downloaded = 0;private TextView processTv;Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {Bundle bundle = msg.getData();int process = bundle.getInt("process");//System.out.println("Handler进度:"+process);processTv.setText("正在下载:"+process+"%");};};@SuppressLint("SetJavaScriptEnabled")@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_download);processTv = (TextView) findViewById(R.id.download_process);Intent intent = getIntent();strURL = intent.getStringExtra("url");if (!strURL.equals("")) {new Thread() {public void run() {openFile(downLoadFile(strURL));};}.start();}}protected File downLoadFile(String httpUrl) {// TODO Auto-generated method stubfinal String fileName = "isufe.apk";File tmpFile = new File("/sdcard/isufe");if (!tmpFile.exists()) {tmpFile.mkdir();}final File file = new File("/sdcard/isufe/" + fileName);long fileLength = 0l;try {URL url = new URL(httpUrl);try {HttpURLConnection conn = (HttpURLConnection) url.openConnection();InputStream is = conn.getInputStream();FileOutputStream fos = new FileOutputStream(file);byte[] buf = new byte[256];conn.connect();double count = 0;if (conn.getResponseCode() >= 400) {Toast.makeText(DownloadActivity.this, "连接超时",Toast.LENGTH_SHORT).show();} else {fileLength = conn.getContentLength();int fileDownload = 0;//System.out.println("文件大小:"+fileLength);while (count <= 100) {if (is != null) {Message msg = new Message();Bundle bundle = new Bundle();int numRead = is.read(buf);fileDownload = fileDownload + numRead;downloaded = (int) (fileDownload*100/fileLength);//System.out.println("已下载:"+downloaded+"");bundle.putInt("process", downloaded);msg.setData(bundle);handler.sendMessage(msg);if (numRead <= 0) {break;} else {fos.write(buf, 0, numRead);}} else {break;}}}conn.disconnect();fos.close();is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return file;}// 打开APK程序代码private void openFile(File file) {// TODO Auto-generated method stubLog.e("OpenFile", file.getName());Intent intent = new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");startActivity(intent);}}
0 0
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现应用下载并自动安装apk包
- Android实现文件下载并自动安装apk包
- Android实现文件下载并自动安装apk包
- 一段Android实现应用下载并自动安装apk包的代码
- apk安装法之二----一段Android实现应用下载并自动安装apk包的代码
- apk安装法之二----一段Android实现应用下载并自动安装apk包的代码
- Android 实现apk文件下载并自动安装
- Android 实现apk文件下载并自动安装
- Android 实现apk文件下载并自动安装
- Android 实现apk文件下载并自动安装
- Android下载APK并自动安装
- 负载均衡 解决方案
- PHP中break及continue两个流程控制指令区别分析
- Linux下SQLPLUS替代工具rlwrap安装使用
- ROS中QThread的使用(同时进行topic的订阅)
- 最少硬币找零问题-动态规划
- Android实现应用下载并自动安装apk包
- 安全实现“记住我”的方法
- Cannot nest 'webapp001/src/main/java/web' inside 'webapp001/src/main/java'
- STL算法学习2
- OCP 1Z0 053 28
- 欧拉回路
- 网易centos的yum源添加
- 关于字符编码
- 邂逅java——print() ,println()