JAVA检查字符串是否不包含字符串数组中的子字符串,

D4rkC00d3r:

您好,我一定很累,因为我似乎无法完成这项工作,在我看来,这是有道理的。我有一个String[]完整的Android应用程序的名字,我想筛选出来之前,我将结果写入一个JSONArray

 public static JSONArray appInfo = new JSONArray();
 public static String[] ignoreList = {"Google", "Maps", "Settings", "Phone", "Chrome", "Photos", "Duo", "YouTube", "Gmail", "Contacts", "Drive", "Clock", "Messages", "Files", "Calculator", "File manager", "Samsung", "Gallery", "LastPass", "OnePlus", "Weather"};

public void listApps(Context c) {

    PackageManager pm = c.getPackageManager();
    Intent main = new Intent(Intent.ACTION_MAIN, null);
    main.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> packages = pm.queryIntentActivities(main, 0);


    for (ResolveInfo resolve_info : packages) {
        try {
            String package_name = resolve_info.activityInfo.packageName;
            String app = (String) pm.getApplicationLabel(pm.getApplicationInfo(package_name, PackageManager.GET_META_DATA));

            for (String tempStr : ignoreList) {
                if (!app.contains(tempStr)) {
                    JSONObject json = new JSONObject(); // Create temp json object with app info.
                    json.put("app", app);
                    appInfo.put(json);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    try {
        Log.d("Debug", appInfo.toString(4));
    } catch (JSONException e) {
        e.printStackTrace();
    }

}

如果我要检查;

if (!app.contains("Google")) {

然后,我JSONArray将不包含带有“ Google”的应用名称,但是当我遍历时,ignoreList我得到了以下信息JSON,即不是来自ignoreList不在?中的其余项目ignorList还不断重复对象吗?任何帮助将非常欢迎。

    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Chrome"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Phone"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Settings"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Google Play Store"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Drive"
    },
    {
        "app": "Maps"
    },
    {
        "app": "Maps"
    },
    {
        "app": "Maps"
    },
    {
        "app": "Maps"
    }
Zain:

现在您有两个问题:

  1. 重复性问题:因为每次添加app到JSON列表时都不会中断for循环,所以您将继续迭代ignoreList并将更多实例添加app到JSON列表中。为了避免您需要添加一条break语句。

  2. 并称,应该被忽略的应用程序:这是因为你所添加的app每一个实例从比较之前的JSON列表中ignoreListapp..它看起来模糊不清,也给我:),所以我会用例子来解释。

例:

考虑您的应用=“ 设置 ”,现在您正在使用for循环将其与列表进行比较,因此首先将其与“ Google进行比较,它不等于它,因此将其添加到中JSON list,当您将其应用于将其与“ 地图进行比较,依此类推,直到将其与“ 设置进行比较,这一次它不会被添加到中JSON list,但是在到达“设置”之前您已经将其添加了多次,因此需要等到您完成整个迭代,再将添加app到中JSON list我用来boolean实现这一目标。

public void listApps(Context c) {

    PackageManager pm = c.getPackageManager();
    Intent main = new Intent(Intent.ACTION_MAIN, null);
    main.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> packages = pm.queryIntentActivities(main, 0);

    for (ResolveInfo resolve_info : packages) {
        try {
            String package_name = resolve_info.activityInfo.packageName;
            String app = (String) pm.getApplicationLabel(pm.getApplicationInfo(package_name, PackageManager.GET_META_DATA));
            boolean isIgnored = false;

            for (String tempStr : ignoreList) {

                if (app.toLowerCase().contains(tempStr.toLowerCase())) {
                    isIgnored = true;
                    break; // to avoid unneeded iterations
                }
            }
            if (!isIgnored) {
                JSONObject json = new JSONObject(); // Create temp json object with app info.
                json.put("app", app);
                appInfo.put(json);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    try {
        Log.d("Debug", appInfo.toString(4));

    } catch (JSONException e) {
        e.printStackTrace();
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查字符串数组是否在javascript中包含子字符串

检查字符串数组是否在react中包含子字符串值

检查字符串数组是否包含javascript中给定字符串的子字符串?

颤振| 如何检查字符串是否不包含子字符串或字符

检查字符串是否不包含Python中子字符串列表中的任何子字符串

检查字符串是否包含任何字符串数组值,然后获取子字符串

检查字符串是否包含数组中的值

检查字符串中是否包含数组值

检查字符串是否不包含列表中的字符串

如何在Rust中检查字符串是否包含子字符串?

检查字符串是否在clojure中包含子字符串

检查字符串是否在Velocity中包含特定的子字符串

SSRS-通过代码检查字符串中是否包含子字符串

Chai.js-检查字符串是否包含列表中的子字符串

如何在JavaScript中检查字符串是否包含子字符串?

如何在Ruby中检查字符串是否包含子字符串

如何在Kotlin中检查字符串是否包含子字符串?

如何检查字符串是否在Bash中包含子字符串

如何在Delphi中检查字符串是否包含子字符串?

If else语句,用于检查字符串是否在R中包含子字符串

检查字符串是否包含数组中的所有字符串

检查字符串是否包含存储在字符串数组中的多个值

如何检查字符串是否包含在字符串数组中?

检查字符串是否包含在数组的字符串元素中

检查字符串是否匹配字符串数组中的任何字符串?

使用C#检查字符串是否在字符串数组中包含字符串

如何检查字符串是否包含JavaScript中的子字符串数组中的文本?

使用Jest检查字符串是否包含数组中的子字符串之一

如何检查字符串是否包含数组中的子字符串并将其拆分