AppProvider extends FDroidProvider { public static Uri getInstalledUri() { return Uri.withAppendedPath(getContentUri(), PATH_INSTALLED); }  static Uri getContentUri(); static Uri getRecentlyUpdatedUri(); static Uri getCategoryUri(String category); static Uri getInstalledWithKnownVulnsUri(); static Uri getTopFromCategoryUri(String category, int limit); static Uri getInstalledUri(); static Uri getCanUpdateUri(); static Uri getRepoUri(Repo repo); static Uri getSpecificAppUri(String packageName, long repoId); static Uri getHighestPriorityMetadataUri(String packageName); static Uri getSearchUri(String query, @Nullable String category); static Uri getSearchUri(Repo repo, String query); static String getAuthority(); @Override Cursor query(@NonNull Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder); @Override int delete(@NonNull Uri uri, String where, String[] whereArgs); @Override Uri insert(@NonNull Uri uri, ContentValues values); @Override int update(@NonNull Uri uri, ContentValues values, String where, String[] whereArgs);  }
@Test public void testMaxSqliteParams() { insertApp("com.example.app1", "App 1"); insertApp("com.example.app100", "App 100"); insertApp("com.example.app1000", "App 1000"); for (int i = 0; i < 50; i++) { InstalledAppTestUtils.install(context, "com.example.app" + i, 1, "v1"); } assertResultCount(contentResolver, 1, AppProvider.getInstalledUri(), PROJ); for (int i = 50; i < 500; i++) { InstalledAppTestUtils.install(context, "com.example.app" + i, 1, "v1"); } assertResultCount(contentResolver, 2, AppProvider.getInstalledUri(), PROJ); for (int i = 500; i < 1100; i++) { InstalledAppTestUtils.install(context, "com.example.app" + i, 1, "v1"); } assertResultCount(contentResolver, 3, AppProvider.getInstalledUri(), PROJ); }