0

我在 ListView 上列出已安装的应用程序。我想获取尚未插入数据库的应用程序。

例如:

所有安装的应用
程序 com.ab
com.cd
com.ef
com.gh
com.jk

数据库记录
com.cd
com.gh

我希望结果这样做:

结果:
com.ab
com.ef
com.jk

我的代码这里:

SQLiteDatabase db = vt2.getReadableDatabase();
Cursor c = db.rawQuery("SELECT uygulamaAdi FROM ivu WHERE kategori='" + kategori + "'", null);
c.moveToFirst();

uygList = new ArrayList<String>();
final PackageManager pm = getPackageManager();

final List<String> paketAdlari = new ArrayList<String>();
final List<String> islemTurleri = new ArrayList<String>();

List<ApplicationInfo> paketler = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo paketBilgi : paketler) {

    if (paketBilgi.packageName != c.getString(0)) {

        uygList.add("   ( + )     " + paketBilgi.loadLabel(pm).toString() + "     (Yükle)   ");
        paketAdlari.add(paketBilgi.packageName);
        islemTurleri.add("kaldir");

        if (sayi<c.getCount()-1) {
            sayi++;
            c.moveToNext();
        }

    }

}

作为我的代码,它给出的结果如下:

com.ab
com.cd
com.ef
com.jk

它只删除最后一条记录。我想删除所有以前的记录...

4

1 回答 1

1

更好的方法是对每个安装的应用程序进行一次搜索,以查看其是否在数据库中,利用数据库的强大功能。或者,如果在获取数据库中的所有应用程序时表现不佳,请将它们添加到 HashSet,然后遍历已安装应用程序列表,如果它在哈希集中,则一一检查。

于 2013-02-24T17:22:09.693 回答