2012-10-04 112 views

回答

1
final PackageManager pm = getPackageManager(); 
List<ApplicationInfo> packages = pm 
      .getInstalledApplications(PackageManager.GET_META_DATA); 
for (ApplicationInfo packageInfo : packages) { 
    Log.d(TAG, "Installed package : " + packageInfo.packageName); 
} 

然后你就可以检查是否packageInfo.packageName等于它包含应用程序的包名称一些字符串。

2

我检查一下这种方式(检查返回值不为null):

public static Intent findFacebookClient(Context con) 
{ 
    final String[] FacebookApps = {"com.facebook.android", "com.facebook.katana"}; 
    Intent facebookIntent = new Intent(); 
    facebookIntent.setType("text/plain"); 
    final PackageManager packageManager = con.getPackageManager(); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(facebookIntent, PackageManager.MATCH_DEFAULT_ONLY); 

    for (int i = 0; i < FacebookApps.length; i++) 
    { 
     for (ResolveInfo resolveInfo : list) 
     { 
      String p = resolveInfo.activityInfo.packageName; 
      if (p != null && p.startsWith(FacebookApps[i])) 
      { 
       facebookIntent.setPackage(p); 
       return facebookIntent; 
      } 
     } 
    } 
    return null; 
}