Android 判斷手機是否安裝指定的軟體,以及呼叫指定的軟體
阿新 • • 發佈:2019-02-15
1、我們經常會需要判斷當前的手機是否安裝的某個apk,來給出提示。
/** * 檢查手機上是否安裝了指定的軟體 * @param context * @param packageName:應用包名 * @return */ public boolean isAvilible(Context context, String packageName){ //獲取packagemanager final PackageManager packageManager = context.getPackageManager(); //獲取所有已安裝程式的包資訊 List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0); //用於儲存所有已安裝程式的包名 List<String> packageNames = new ArrayList<String>(); //從pinfo中將包名字逐一取出,壓入pName list中 if(packageInfos != null){ for(int i = 0; i < packageInfos.size(); i++){ String packName = packageInfos.get(i).packageName; packageNames.add(packName); } } //判斷packageNames中是否有目標程式的包名,有TRUE,沒有FALSE return packageNames.contains(packageName); }
例如:需要判斷當前手機是否安裝百度地圖的時候,如果沒有安裝並給出符合使用者體驗的提示。
2、呼叫指定的軟體/** * 駕車導航 */ protected void startNavi(double startLat, double startLong, double endLat, double endLong, String startName, String endName) { if(isAvilible(WebActivity.this,"com.baidu.BaiduMap")) { try { RouteParaOption para = new RouteParaOption(); para.endName(endName); para.endPoint(new LatLng(endLat, endLong)); para.startName("我的位置"); BaiduMapRoutePlan.openBaiduMapDrivingRoute(para, CommonUtil.getContext()); } catch (Exception e) { e.printStackTrace(); showDialog(); } }else { showDialog(); } } /** * 提示未安裝百度地圖app或app版本過低 */ public void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("您尚未安裝百度地圖app或app版本過低,點選確認安裝?"); builder.setTitle("提示"); builder.setPositiveButton("確認", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); OpenClientUtil.getLatestBaiduMapApp(WebActivity.this); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); }
Intent intent = this.getPackageManager().getLaunchIntentForPackage(
"com.demo.test");
startActivityForResult(intent, REQUEST_CODE2);