码迷,mamicode.com
首页 > 移动开发 > 详细

检索android是否安装某个APP

时间:2015-07-09 17:58:26      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:android   app   

今天和大家分享如何判断手机上是否安装了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();  
    }   
}  

版权声明:本文为博主原创文章,未经博主允许不得转载。

检索android是否安装某个APP

标签:android   app   

原文地址:http://blog.csdn.net/u013651405/article/details/46819559

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!