InstalledAppProvider: use Android sematics for query methods

Throughout Android, a null projection means return the full record.  This
is well documented.

Also, null sortOrder means use default sort order.
This commit is contained in:
Hans-Christoph Steiner 2019-06-03 15:35:09 +02:00
parent 4c352aeadc
commit 89140d5334
2 changed files with 8 additions and 15 deletions

View File

@ -30,7 +30,6 @@ import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.InstalledAppProvider; import org.fdroid.fdroid.data.InstalledAppProvider;
import org.fdroid.fdroid.data.Schema.InstalledAppTable; import org.fdroid.fdroid.data.Schema.InstalledAppTable;
import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.localrepo.LocalRepoService;
import org.fdroid.fdroid.localrepo.SwapService;
import org.fdroid.fdroid.localrepo.SwapView; import org.fdroid.fdroid.localrepo.SwapView;
public class SelectAppsView extends SwapView implements LoaderManager.LoaderCallbacks<Cursor> { public class SelectAppsView extends SwapView implements LoaderManager.LoaderCallbacks<Cursor> {
@ -61,7 +60,7 @@ public class SelectAppsView extends SwapView implements LoaderManager.LoaderCall
listView = findViewById(R.id.list); listView = findViewById(R.id.list);
adapter = new AppListAdapter(listView, getContext(), adapter = new AppListAdapter(listView, getContext(),
getContext().getContentResolver().query(InstalledAppProvider.getContentUri(), getContext().getContentResolver().query(InstalledAppProvider.getContentUri(),
InstalledAppTable.Cols.ALL, null, null, null)); null, null, null, null));
listView.setAdapter(adapter); listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
@ -97,13 +96,7 @@ public class SelectAppsView extends SwapView implements LoaderManager.LoaderCall
} else { } else {
uri = InstalledAppProvider.getSearchUri(currentFilterString); uri = InstalledAppProvider.getSearchUri(currentFilterString);
} }
return new CursorLoader( return new CursorLoader(getActivity(), uri, null, null, null, null);
getActivity(),
uri,
InstalledAppTable.Cols.ALL,
null,
null,
InstalledAppTable.Cols.APPLICATION_LABEL);
} }
@Override @Override

View File

@ -37,8 +37,7 @@ public class InstalledAppProvider extends FDroidProvider {
Map<String, Long> cachedInfo = new HashMap<>(); Map<String, Long> cachedInfo = new HashMap<>();
final Uri uri = InstalledAppProvider.getContentUri(); final Uri uri = InstalledAppProvider.getContentUri();
final String[] projection = Cols.ALL; Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) { if (cursor != null) {
if (cursor.getCount() > 0) { if (cursor.getCount() > 0) {
cursor.moveToFirst(); cursor.moveToFirst();
@ -58,7 +57,7 @@ public class InstalledAppProvider extends FDroidProvider {
@Nullable @Nullable
public static InstalledApp findByPackageName(Context context, String packageName) { public static InstalledApp findByPackageName(Context context, String packageName) {
Cursor cursor = context.getContentResolver().query(getAppUri(packageName), Cols.ALL, null, null, null); Cursor cursor = context.getContentResolver().query(getAppUri(packageName), null, null, null, null);
if (cursor == null) { if (cursor == null) {
return null; return null;
} }
@ -249,9 +248,10 @@ public class InstalledAppProvider extends FDroidProvider {
} }
QueryBuilder query = new QueryBuilder(); QueryBuilder query = new QueryBuilder();
query.addFields(projection); if (projection == null || projection.length == 0) {
if (projection.length == 0) { query.addFields(Cols.ALL);
query.addField(Cols._ID); } else {
query.addFields(projection);
} }
query.addSelection(selection); query.addSelection(selection);
query.addOrderBy(sortOrder); query.addOrderBy(sortOrder);