在我的应用程序中,我从Google Play插入用户访问应用程序包名称并将其保存在数据库中。我只显示来自安装应用程序的应用程序包名称在数据库中。
值成功插入到数据库中,但是当我在此行PlayStoreApps
的{{1}}类中进行比较时:
if (arraylist.equals(p.packageName))
答案 0 :(得分:0)
首先:不要使用非通用Lists
。
在loadInstalledApps
方法中,您可以使用以下行:
List arraylist = db.getAllApps();
当getAllApps
返回ArrayList<String>
时,您的List
应为List<String>
类型。
第二:您无法比较列表中的项目,例如您要执行的操作:
if(arraylist.equals(p.packageName)
您实际上是在尝试查看ArrayList
对象是否等于String
。比较苹果和橘子也不顺利......
第三:在代码中进行比较而不是在SQL中进行比较在性能上确实很慢,并且应该可以避免,尤其是在移动操作系统上,因为这会浪费内存和CPU。
如果你真的想在代码中进行比较,你可以这样做:
if(arraylist.contains(p.packageName)) {
// Do something
App app = new App();
app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
app.setPackageName(p.packageName);
app.setVersionName(p.versionName);
app.setVersionCode(p.versionCode);
CharSequence description = p.applicationInfo.loadDescription(packageManager);
app.setDescription(description != null ?
description.toString() : "");
apps.add(app);
}
但我不推荐这条道路。