0

ContentResolver.query選択引数をエスケープしますか?

たとえば、次のselArgsようなことを行う前に、手動で引数をエスケープする必要があります

Cursor c = contentResolver.query(uri, null, "mimetype=?", selArgs, null);

またはそれはquery方法によって行われますか?

4

1 に答える 1

0

いいえ。コンテンツ プロバイダで手動で行う必要があります。

クエリ関数のソース コード:

public final Cursor query(Uri uri, String[] projection,
            String selection, String[] selectionArgs, String sortOrder) {
        IContentProvider provider = acquireProvider(uri);
        if (provider == null) {
            return null;
        }
        try {
            long startTime = SystemClock.uptimeMillis();
            Cursor qCursor = provider.query(uri, projection, selection, selectionArgs, sortOrder);
            if (qCursor == null) {
                releaseProvider(provider);
                return null;
            }
            // force query execution
            qCursor.getCount();
            long durationMillis = SystemClock.uptimeMillis() - startTime;
            maybeLogQueryToEventLog(durationMillis, uri, projection, selection, sortOrder);
            // Wrap the cursor object into CursorWrapperInner object
            return new CursorWrapperInner(qCursor, provider);
        } catch (RemoteException e) {
            releaseProvider(provider);

            // Arbitrary and not worth documenting, as Activity
            // Manager will kill this process shortly anyway.
            return null;
        } catch (RuntimeException e) {
            releaseProvider(provider);
            throw e;
        }
    }
于 2012-04-25T13:04:32.323 に答える