Android程序使用代码的安装和卸载

本文详细介绍了在Android设备上通过Intent操作安装和卸载APK文件的方法,包括使用Environment类获取文件路径、创建Intent并设置正确的数据类型以及使用Uri解析程序包路径等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装:

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) {
	// 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);
}

转自:http://www.cnblogs.com/Greenwood/archive/2011/03/09/1979268.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值