安装: 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);
Environment拥有一些可以获取环境变量的方法 package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名). //下载apk程序代码

protected File downLoadFile(String httpUrl) {
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) {

e.printStackTrace();
}
} catch (MalformedURLException e) {
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);
}

备注说明:

Android系统的应用安装,在系统设置里面有一项,是否安装未知源,所在在软件更新的时候,需要检测这个选项,如果打钩,则只允许安装Market源提供的安装程序,如果没有打钩的话,系统安装应用时会提示用户设置,如果选择设置,设置好后,无法返回安装界面;如果选择取消,则推出安装程序。所以,如果是更新的话,一定要在下载之前就检测许可安装源的设置,或者在下载前检测是否已经下载过新的安装程序,避免重复下载安装程序。

相关的代码如下

int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);

if (result == 0) {

// show some dialog here

// ...

// and may be show application settings dialog manually

Intent intent = new Intent();

intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);

startActivity(intent);

}

更多相关文章

  1. android 网络下载获取文件大小
  2. Android(安卓)Studio 下载 与 安装 详细步骤
  3. centOs7安装Android(安卓)Sdk详细教程
  4. 64位Ubuntu 16.04下安装Android(安卓)Studio
  5. mac下android studio安装的几个文件路径
  6. Android获取包相关信息--code
  7. Android(安卓)导出数据库到Excel表格功能
  8. Android在外部修改了工程名文件夹名称,报错
  9. Android(安卓)http协议实现文件下载

随机推荐

  1. Android(安卓)App卡顿慢优化之多线程优化
  2. Kotlin Hello World
  3. Android image的示例 拍照显示
  4. 自己动手写一个简单的Android下拉刷新
  5. Android跨进程通信之小例子(一)
  6. android UI进阶之仿iphone的tab效果 (Andr
  7. Mono for Android(安卓)(1) 之布局
  8. android应用安全——签名机制
  9. Unity3D调用android方法(非插件方式)
  10. OProfile在Andorid上使用