2013-02-24 52 views
0

我在ListView上列出已安装的应用程序。我想要将不是的应用程序插入到数据库中。

例如:

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

数据库记录
com.cd
com.gh

我想要结果如下:

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

我的代码在这里:

Android列表已安装的应用程序相关数据库

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

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

回答

1

这样做的一个更好的方法是发送一个搜索每个应用程序安装,看看它是否在数据库中,利用的力量D b。或者,如果这不能很好地执行db中的所有应用程序,请将它们添加到HashSet中,然后遍历已安装的应用程序的列表,如果它在哈希集中,则按1逐一检查。

+0

我写了一个SQL查询到循环中,如你所说,我为每个记录做了一个。非常感谢... – halilkaya 2013-02-24 17:41:56

相关问题