diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java index 342126c3b..5ba551ecb 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java @@ -701,7 +701,10 @@ public class AppProvider extends FDroidProvider { return new AppQuerySelection(); } - final String selection = CategoryTable.NAME + "." + CategoryTable.Cols.NAME + " = ? "; + // Note, the COLLATE NOCASE only works for ASCII columns. The "ICU extension" for SQLite + // provides proper case management for Unicode characters, but is not something provided + // by Android. + final String selection = CategoryTable.NAME + "." + CategoryTable.Cols.NAME + " = ? COLLATE NOCASE "; final String[] args = {category}; return new AppQuerySelection(selection, args); } diff --git a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java index f8aa3badd..900237533 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java @@ -185,7 +185,7 @@ public class CategoryProvider extends FDroidProvider { } protected QuerySelection querySingle(String categoryName) { - final String selection = getTableName() + "." + Cols.NAME + " = ?"; + final String selection = getTableName() + "." + Cols.NAME + " = ? COLLATE NOCASE"; final String[] args = {categoryName}; return new QuerySelection(selection, args); } diff --git a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java index 937383e3f..fb73d0fb6 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java @@ -82,6 +82,13 @@ public class CategoryProviderTest extends FDroidProviderTest { "com.chicken", }); + assertPackagesInCategory("animal", new String[] { + "com.dog", + "com.cat", + "com.crow", + "com.chicken", + }); + assertPackagesInCategory("Bird", new String[]{ "com.crow", "com.chicken",