安卓系统已安装软件的判断及通过程序安装
- - 移动开发 - ITeye博客 uri是指AndroidManifest.xml文件中的package,是安卓应用的标识符. 基本思路:apk放到assets目录下,安装时先写到sd,再调用intent安装. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.
1. 查看系统是否已经安装某个应用
private boolean appInstalledOrNot(String uri) { PackageManager pm = getPackageManager(); boolean appInstalled; try { pm.getPackageInfo(uri, 0); appInstalled = true; } catch (PackageManager.NameNotFoundException e) { appInstalled = false; } return appInstalled; }
uri是指AndroidManifest.xml文件中的package,是安卓应用的标识符。
2. 判断安装的版本号
private int getAPKVersion(String uri) { Integer version = -1; PackageManager packageManager=getPackageManager(); try { //0 means all the flags are turned off PackageInfo Info=packageManager.getPackageInfo(uri, 0); //like 5 version = Info.versionCode; //like 1.0.5 versionName = Info.versionName; } catch (PackageManager.NameNotFoundException e) { Log.e("error", e.getMessage()); } return version; }
3. 安装
基本思路:apk放到assets目录下,安装时先写到sd,再调用intent安装
private void installScannerPlugin() { AssetManager assetManager = getAssets(); InputStream in; OutputStream out; try { in = assetManager.open("BarcodeScanner.apk"); out = new FileOutputStream(Environment.getExternalStorageDirectory() + File.separator + "BarcodeScanner.apk"); byte[] buffer = new byte[1024]; int len; while((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } in.close(); out.flush(); out.close(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + File.separator + "BarcodeScanner.apk")), "application/vnd.android.package-archive"); startActivity(intent); } catch(Exception e) { e.printStackTrace(); } }
需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />