diff --git a/fake-signature/src/huawei/java/com/huawei/signature/diff/AppListDatabaseOpenHelper.java b/fake-signature/src/huawei/java/com/huawei/signature/diff/AppListDatabaseOpenHelper.java new file mode 100644 index 00000000..f7e2d26e --- /dev/null +++ b/fake-signature/src/huawei/java/com/huawei/signature/diff/AppListDatabaseOpenHelper.java @@ -0,0 +1,75 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.huawei.signature.diff; + +import android.content.ContentValues; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; +import org.microg.signature.fake.R; + +public class AppListDatabaseOpenHelper extends SQLiteOpenHelper { + private static final String TAG = AppListDatabaseOpenHelper.class.getSimpleName(); + private static final String DATABASE_NAME = "app_list.db"; + public static final String TABLE_APPLIST = "applist"; + public static final String COLUMN_NAME = "name"; + public static final String COLUMN_FAKE = "fake"; + private static final int DATABASE_VERSION = 3; + private static final String DROP_APP_LIST_TABLE = "DROP TABLE IF EXISTS " + TABLE_APPLIST; + private static final String CREATE_APP_LIST_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_APPLIST + "(" + + COLUMN_NAME + " VARCHAR(255) PRIMARY KEY, " + + COLUMN_FAKE + " INTEGER CHECK(" + COLUMN_FAKE + " >= 0 and " + COLUMN_FAKE + " <= 1)" + + ")"; + private final Context context; + + public AppListDatabaseOpenHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + this.context = context; + } + + @Override + public void onCreate(SQLiteDatabase db) { + Log.d(TAG, "onCreate"); + db.execSQL(DROP_APP_LIST_TABLE); + db.execSQL(CREATE_APP_LIST_TABLE); + initData(db); + } + + @Override + public void onOpen(SQLiteDatabase db) { + super.onOpen(db); + if (!db.isReadOnly()) { + initData(db); + } + } + + private void initData(SQLiteDatabase db) { + String[] wantFakeApps = context.getResources().getStringArray(R.array.signature_want_fake); + String[] neverFakeApps = context.getResources().getStringArray(R.array.signature_never_fake); + if (wantFakeApps.length == 0 && neverFakeApps.length == 0) { + return; + } + for (String app : wantFakeApps) { + db.insertWithOnConflict(TABLE_APPLIST, null, generateValues(app, true), SQLiteDatabase.CONFLICT_REPLACE); + } + for (String app : neverFakeApps) { + db.insertWithOnConflict(TABLE_APPLIST, null, generateValues(app, false), SQLiteDatabase.CONFLICT_REPLACE); + } + } + + private ContentValues generateValues(String packageName, boolean fake) { + ContentValues contentValues = new ContentValues(); + contentValues.put(COLUMN_NAME, packageName); + contentValues.put(COLUMN_FAKE, fake ? 1 : 0); + return contentValues; + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + onCreate(db); + } +} \ No newline at end of file diff --git a/fake-signature/src/main/res/values/arrays.xml b/fake-signature/src/main/res/values/arrays.xml index 86a670a0..4f3118db 100644 --- a/fake-signature/src/main/res/values/arrays.xml +++ b/fake-signature/src/main/res/values/arrays.xml @@ -28,6 +28,10 @@ com.mobisoft.morhipo com.zzkko com.didilabs.kaavefali + com.airbnb.android + com.mobillium.papara + co.com.fincaraiz.app + com.frisby.frisby com.truecaller