是在那里找出是否安装了apk,如果是这样,打开应用程序

时间:2016-03-11 14:43:41

标签: java android methods install apk

大家好,我之前的一些问题已被标记下来,所以请保持愉快。

我想知道的是,如果有一些我可以使用的代码告诉我的应用程序的用户安装了apk。然后在我的应用程序中打开它。

我有一个列表视图,列表视图中是可供下载的应用列表。我已经弄清楚如何找出apk是否安装而不是下载。但是我无法确定安装位。

我试过这个

public static boolean isPackageInstalled(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(packageName);
if (intent == null) {
    return false;
}
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;

}

然后使用

ispackageinstalled();

但这要求Context和string 所以我尝试将其添加到构造函数

Context shb;
private Static String Showbox = "com.tk.Showbox";

然后尝试了

ispackageinstalled(shb,Showbox);

并且应用程序崩溃大声笑我很明显写错了。如果可能的话,我也希望选择变成红色。但让应用程序打开将是一个很好的帮助欢呼球员

2 个答案:

答案 0 :(得分:1)

您需要将实际的Context传递给该方法。托管Activity的{​​{1}}子类是ListView。将Context传递到Activity方法。

答案 1 :(得分:0)

发现这个按照我想要的方式工作

 private boolean isCallable(Intent intent) {

    if (intent == null) {
        return false;
    }
    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;

}

然后使用像这样的包详细信息制作一个Intent

Intent AllcastOpen = getPackageManager().getLaunchIntentForPackage("com.koushikdutta.cast");

然后是if语句

 if (isCallable(AllcastOpen) == true) {
  AllcastInstalled.equals(true);

  startActivity(AllcastOpen);

allcastInstalled是一种单独的方法,如果根据

安装/下载,则会更改选择的颜色