0

インストールされているアプリケーションを ListView に一覧表示しています。データベースに挿入され ていないアプリケーションを取得したい。

例:

ALL INSTALLED APPLICATIONS
com.ab
com.cd
com.ef
com.gh
com.jk

DATABASE RECORDS
com.cd
com.gh

結果でそれを実行したい:

RESULT:
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

これを行うためのより良い方法は、インストールされているアプリケーションごとに単一の検索を送信して、DB にあるかどうかを確認し、db の機能を利用することです。または、データベース内のすべてのアプリケーションをうまく取得できない場合は、それらを HashSet に追加し、インストールされているアプリのリストを 1 つずつ調べて、ハッシュセット内にあるかどうかを確認します。

于 2013-02-24T17:22:09.693 に答える