关闭

检索android是否安装某个APP

标签: androidapp
465人阅读 评论(0) 收藏 举报
分类:
今天和大家分享如何判断手机上是否安装了XXX.apk。
因为国外项目在打开地图的时候一定要使用gGoogle map,像这种打开第三方软件的,android都会采用Intent进行跳转,然后根据ACTION判断类型,弹出一个选项框。但是客户非要指定Google map,所以在跳转的时候就要进行筛选,其实就是根据APK的包名进行筛选以Google map 为例~

Google map的包名为com.google.android.apps.maps,如果你想知道其他的,直接百度下就好了。值得注意的是,如果手机上没存在Google map,程序会崩溃。所以在做的时候得规避下这种错误,抛出一个Tomast。
if (checkApkExist(getActivity(),
                                        "com.google.android.apps.maps")) {
                                    Intent i = new Intent(
                                            Intent.ACTION_VIEW,
                                            Uri.parse("http://ditu.google.cn/maps?hl=zh&mrt=loc&q="
                                                    + (Double
                                                            .parseDouble(mLocation
                                                                    .getLongitude())
                                                            + "," + Double
                                                                .parseDouble(mLocation
                                                                        .getLongitude()))));
                                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                            & Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                                    i.setClassName(
                                            "com.google.android.apps.maps",
                                            "com.google.android.maps.MapsActivity");
                                    startActivity(i);
                                } else {
                                    Toast.makeText(getActivity(),
                                            "Please download google map",
                                            Toast.LENGTH_LONG);
                                }
boolean checkApkExist(Context context, String packageName) {
        if (packageName == null || "".equals(packageName)) {
            return false;
        }
        try {
            context.getPackageManager().getApplicationInfo(packageName,
                    PackageManager.GET_UNINSTALLED_PACKAGES);
            return true;
        } catch (NameNotFoundException e) {
            return false;
        }
    }

另附上一个检索所有的APK的代码:

final PackageManager packageManager = getActivity().getPackageManager();//获取packagemanager   
List< PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息   
    if(pinfo != null){   
    for(int i = 0; i < pinfo.size(); i++){   
        String packName = pinfo.get(i).packageName;   
        Log.d("info", "-->"+packName);  
    }   
} 

再写文章的时候又想起是否要检测下是否在sd卡上,所以又从网上找到了一段代码:

private void isInstallOnSd(Context context,String name){  
    PackageManager pm=context.getPackageManager();  
    ApplicationInfo appInfo;  
    try {  
        appInfo = pm.getApplicationInfo(name, 0);  
        if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {  
               // App on sdcard  
            Log.d("info", "app on sd");  
        }  
    } catch (NameNotFoundException e) {  
        e.printStackTrace();  
    }   
}  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56011次
    • 积分:1220
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:38篇
    • 译文:0篇
    • 评论:5条
    最新评论