Cursor.java revision 820e9b6b9cea6cce8115339dd774cdc273c4d6da
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.database;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentResolver;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This interface provides random read-write access to the result set returned
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by a database query.
26f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton *
27f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton * Cursor implementations are not required to be synchronized so code using a Cursor from multiple
28f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton * threads should perform its own synchronization when using the Cursor.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface Cursor {
318b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /*
328b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Values returned by {@link #getType(int)}.
338b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * These should be consistent with the corresponding types defined in CursorWindow.h
348b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     */
358b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column is null */
368b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_NULL = 0;
378b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
388b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified  column type is integer */
398b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_INTEGER = 1;
408b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
418b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is float */
428b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_FLOAT = 2;
438b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
448b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is string */
458b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_STRING = 3;
468b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
478b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is blob */
488b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_BLOB = 4;
498b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the numbers of rows in the cursor.
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the number of rows in the cursor.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getCount();
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the current position of the cursor in the row set.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The value is zero-based. When the row set is first returned the cursor
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will be at positon -1, which is before the first row. After the
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * last row is returned another call to next() will leave the cursor past
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the last entry, at a position of count().
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the current cursor position.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPosition();
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor by a relative amount, forward or backward, from the
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * current position. Positive offsets move forwards, negative offsets move
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * backwards. If the final position is outside of the bounds of the result
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * set then the resultant position will be pinned to -1 or count() depending
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on whether the value is off the front or end of the set, respectively.
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return true if the requested destination was
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reachable, otherwise, it returns false. For example, if the cursor is at
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * currently on the second entry in the result set and move(-5) is called,
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the position will be pinned at -1, and false will be returned.
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param offset the offset to be applied from the current position.
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the requested move fully succeeded.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean move(int offset);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to an absolute position. The valid
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * range of values is -1 &lt;= position &lt;= count.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return true if the request destination was reachable,
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * otherwise, it returns false.
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param position the zero-based position to move to.
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the requested move fully succeeded.
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToPosition(int position);
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the first row.
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is empty.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToFirst();
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the last row.
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is empty.
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToLast();
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the next row.
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is already past the
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * last entry in the result set.
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToNext();
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the previous row.
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is already before the
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * first entry in the result set.
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToPrevious();
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the first row.
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is pointing at the first entry.
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isFirst();
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the last row.
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is pointing at the last entry.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isLast();
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the position before the first
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * row.
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is before the first result.
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isBeforeFirst();
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the position after the last
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * row.
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is after the last result.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isAfterLast();
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the zero-based index for the given column name, or -1 if the column doesn't exist.
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If you expect the column to exist use {@link #getColumnIndexOrThrow(String)} instead, which
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will make the error more clear.
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnName the name of the target column.
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the zero-based column index for the given column name, or -1 if
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the column name does not exist.
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getColumnIndexOrThrow(String)
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnIndex(String columnName);
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the zero-based index for the given column name, or throws
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link IllegalArgumentException} if the column doesn't exist. If you're not sure if
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a column will exist or not use {@link #getColumnIndex(String)} and check for -1, which
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is more efficient than catching the exceptions.
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnName the name of the target column.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the zero-based column index for the given column name
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getColumnIndex(String)
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IllegalArgumentException if the column does not exist
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException;
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the column name at the given zero-based column index.
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the column name for the given column index.
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getColumnName(int columnIndex);
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string array holding the names of all of the columns in the
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * result set in the order in which they were listed in the result.
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the names of the columns returned in this query.
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getColumnNames();
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return total number of columns
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return number of columns
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnCount();
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a byte array.
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not blob exception may throw
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a byte array.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    byte[] getBlob(int columnIndex);
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a String.
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not text the result will be
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to String.valueOf(x).
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a String.
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getString(int columnIndex);
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the requested column text and stores it in the buffer provided.
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the buffer size is not sufficient, a new char buffer will be allocated
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and assigned to CharArrayBuffer.data
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        if the target column is null, return buffer
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param buffer the buffer to copy the text into.
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer);
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a short.
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not numeric the result will be
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to Short.valueOf(x).
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a short.
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    short getShort(int columnIndex);
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as an int.
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not numeric the result will be
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to Integer.valueOf(x).
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as an int.
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getInt(int columnIndex);
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a long.
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not numeric the result will be
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to Long.valueOf(x).
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a long.
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    long getLong(int columnIndex);
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a float.
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not numeric the result will be
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to Float.valueOf(x).
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a float.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getFloat(int columnIndex);
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a double.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>If the native content of that column is not numeric the result will be
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the result of passing the column value to Double.valueOf(x).
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a double.
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    double getDouble(int columnIndex);
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2998b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Returns data type of the given column's value.
3008b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * The preferred type of the column is returned but the data may be converted to other types
3018b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * as documented in the get-type methods such as {@link #getInt(int)}, {@link #getFloat(int)}
3028b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * etc.
3038b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *<p>
3048b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Returned column types are
3058b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * <ul>
3068b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_NULL}</li>
3078b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_INTEGER}</li>
3088b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_FLOAT}</li>
3098b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_STRING}</li>
3108b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_BLOB}</li>
3118b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *</ul>
3128b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *</p>
3138b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *
3148b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * @param columnIndex the zero-based index of the target column.
3158b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * @return column value type
3168b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     */
3178b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    int getType(int columnIndex);
3188b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
3198b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /**
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns <code>true</code> if the value in the indicated column is null.
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the column value is null.
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isNull(int columnIndex);
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Deactivates the Cursor, making all calls on it fail until {@link #requery} is called.
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Inactive Cursors use fewer resources than active Cursors.
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calling {@link #requery} will make the cursor active again.
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void deactivate();
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Performs the query that created the cursor again, refreshing its
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contents. This may be done at any time, including after a call to {@link
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #deactivate}.
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
33920f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * Since this method could execute a query on the database and potentially take
34020f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * a while, it could cause ANR if it is called on Main (UI) thread.
34120f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * A warning is printed if this method is being executed on Main thread.
34220f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     *
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the requery succeeded, false if not, in which case the
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         cursor becomes invalid.
345820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori     * @deprecated Don't use this. Just request a new cursor, so you can do this
346820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori     * asynchronously and update your list view once the new cursor comes back.
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
348820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori    @Deprecated
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean requery();
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Closes the Cursor, releasing all of its resources and making it completely invalid.
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unlike {@link #deactivate()} a call to {@link #requery()} will not make the Cursor valid
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * again.
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void close();
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * return true if the cursor is closed
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the cursor is closed.
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isClosed();
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register an observer that is called when changes happen to the content backing this cursor.
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Typically the data set won't change until {@link #requery()} is called.
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object that gets notified when the content backing the cursor changes.
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterContentObserver(ContentObserver)
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerContentObserver(ContentObserver observer);
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister an observer that has previously been registered with this
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cursor via {@link #registerContentObserver}.
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object to unregister.
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerContentObserver(ContentObserver)
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterContentObserver(ContentObserver observer);
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register an observer that is called when changes happen to the contents
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of the this cursors data set, for example, when the data set is changed via
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #requery()}, {@link #deactivate()}, or {@link #close()}.
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object that gets notified when the cursors data set changes.
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterDataSetObserver(DataSetObserver)
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerDataSetObserver(DataSetObserver observer);
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister an observer that has previously been registered with this
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cursor via {@link #registerContentObserver}.
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object to unregister.
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerDataSetObserver(DataSetObserver)
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterDataSetObserver(DataSetObserver observer);
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register to watch a content URI for changes. This can be the URI of a specific data row (for
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * example, "content://my_provider_type/23"), or a a generic URI for a content type.
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cr The content resolver from the caller's context. The listener attached to
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this resolver will be notified.
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The content URI to watch.
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setNotificationUri(ContentResolver cr, Uri uri);
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * onMove() will only be called across processes if this method returns true.
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether all cursor movement should result in a call to onMove().
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getWantsAllOnMoveCalls();
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a bundle of extra values. This is an optional way for cursors to provide out-of-band
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * metadata to their users. One use of this is for reporting on the progress of network requests
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that are required to fetch data for the cursor.
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>These values may only change when requery is called.
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return cursor-defined values, or Bundle.EMTPY if there are no values. Never null.
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle getExtras();
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is an out-of-band way for the the user of a cursor to communicate with the cursor. The
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * structure of each bundle is entirely defined by the cursor.
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>One use of this is to tell a cursor that it should retry its network request after it
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reported an error.
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param extras extra values, or Bundle.EMTPY. Never null.
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return extra values, or Bundle.EMTPY. Never null.
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle respond(Bundle extras);
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
438