我想知道特定应用程序作为App1已安装或未安装在我的应用程序上
这里我不知道该App1的实际包名(App1只是名称)
那么如何找到当前安装的应用程序?
我试过这个,
private static final String PACKAGE_NAME = "App1";
/**
* Returns true if "App1" is installed.
*/
public static boolean isApp1Installed( Context context )
{
boolean output = false;
PackageManager pm = context.getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo( PACKAGE_NAME, 0 );
if( pi != null )
{
output = true;
}
} catch (PackageManager.NameNotFoundException e) {}
return output;
}
请帮助我..
答案 0 :(得分:3)
您可以使用以下命令使用PackageManager获取所有已安装软件包的列表:
getInsatlledPackages
或
的活动清单queryIntentActivities
表示CATEGORY_LAUNCHER
通过名称,您可以找到是否安装了应用程序:
String appname = packageManager.getApplicationLabel(pk).toString();
您也可以点击以下链接获取更多帮助:
http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon
希望它能解决你的问题。
答案 1 :(得分:2)
Qwerty是正确的,您应该接受他/她的答案,但我想补充说,在某些情况下,此方法无法按预期执行。如果您正在检查市场上的应用程序,那么您应该没有问题。如果您正在检查其中一个默认的Android系统应用,则可能会遇到问题(就像我一样)。有些制造商会更换库存消息应用程序之类的东西,你通常可以通过检查包装是否存在来捕获它。但是,一家制造商决定以新的包名替换库存消息应用程序,并保留旧包没有任何活动。我解决它的方法是检查PackageInfo.activities的大小。如果它是空的,那就好像应用程序不在那里一样。
答案 2 :(得分:0)
您可以检查是否有意图:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.myapp");
if (launchIntent == null) {
// it is not installed
}