Added getSearchUri() to InstalledAppProvider
This allows for searching installed app names for ones which match a string. It searches based on the "label" as declared in the manifest in the <application> tag as "android:label".
This commit is contained in:
parent
60f5a1441c
commit
5e02404d6a
@ -64,10 +64,14 @@ public class InstalledAppProvider extends FDroidProvider {
|
||||
|
||||
private static final String PROVIDER_NAME = "InstalledAppProvider";
|
||||
|
||||
private static final String PATH_SEARCH = "search";
|
||||
private static final int CODE_SEARCH = CODE_SINGLE + 1;
|
||||
|
||||
private static final UriMatcher matcher = new UriMatcher(-1);
|
||||
|
||||
static {
|
||||
matcher.addURI(getAuthority(), null, CODE_LIST);
|
||||
matcher.addURI(getAuthority(), PATH_SEARCH + "/*", CODE_SEARCH);
|
||||
matcher.addURI(getAuthority(), "*", CODE_SINGLE);
|
||||
}
|
||||
|
||||
@ -79,6 +83,13 @@ public class InstalledAppProvider extends FDroidProvider {
|
||||
return Uri.withAppendedPath(getContentUri(), appId);
|
||||
}
|
||||
|
||||
public static Uri getSearchUri(String keywords) {
|
||||
return getContentUri().buildUpon()
|
||||
.appendPath(PATH_SEARCH)
|
||||
.appendPath(keywords)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static String getApplicationLabel(Context context, String packageName) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
ApplicationInfo appInfo;
|
||||
@ -116,6 +127,10 @@ public class InstalledAppProvider extends FDroidProvider {
|
||||
return new QuerySelection("appId = ?", new String[] { appId } );
|
||||
}
|
||||
|
||||
private QuerySelection querySearch(String keywords) {
|
||||
return new QuerySelection("applicationLabel LIKE ?", new String[] { "%" + keywords + "%" } );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor query(Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) {
|
||||
if (sortOrder == null) {
|
||||
@ -131,6 +146,10 @@ public class InstalledAppProvider extends FDroidProvider {
|
||||
selection = selection.add(queryApp(uri.getLastPathSegment()));
|
||||
break;
|
||||
|
||||
case CODE_SEARCH:
|
||||
selection = selection.add(querySearch(uri.getLastPathSegment()));
|
||||
break;
|
||||
|
||||
default:
|
||||
String message = "Invalid URI for installed app content provider: " + uri;
|
||||
Log.e("FDroid", message);
|
||||
|
Loading…
x
Reference in New Issue
Block a user