安装: 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. [CSDN]Android应用程序启动过程源代码分析
  3. android连续按两次返回退出程序(完整代码)
  4. Android声纹识别程序
  5. android保持在休眠时,后台程序继续运行(让程序获取设备电源锁)
  6. android 使用系统照相程序照相并存储、显示在界面上

随机推荐

  1. input 之我见1
  2. 2010.12.14——— android 应用的自动更
  3. Google Android admob
  4. android图片闪烁或帧动画
  5. Mac下完全卸载干净Android Studio
  6. msm8916 lcd 相关调试点指导
  7. android studio 调试android源码
  8. Android编程权威指南(第二版)— 第10章挑战
  9. 【Android】TV端项目开发挖坑总结
  10. Android的关键的持久数据应该在onPause()