2013-02-24 55 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

相關問題