安装:

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(安卓)8.0 app内覆盖安装
  2. android 遍历安装过的包名
  3. android 如何调用系统自带的程序安装器安装程序
  4. android环境配置
  5. Android(安卓)6.0源码编译环境搭建
  6. android资源下载
  7. Android(安卓)安装步骤
  8. Android中FTP上传、下载
  9. Android(安卓)O 设备不允许安装第三方APP

随机推荐

  1. 【Android】性能优化的一些方法
  2. Android(安卓)ListView 去除边缘阴影、选
  3. Android(安卓)textview 显示不全的问题
  4. Android如何设置TextView的行间距、行高
  5. drawable类型
  6. android jni 程序框架搭建
  7. Android高手进阶教程(五)之----Android(
  8. android之android:largeHeap说明
  9. Android(安卓)中文 API (16) ―― AnalogCl
  10. android自带数据库之数据插入