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
2303bd302aebbb77f4f95789a269c8a5463ac5a840Jeff Brownimport java.io.Closeable;
2403bd302aebbb77f4f95789a269c8a5463ac5a840Jeff Brown
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This interface provides random read-write access to the result set returned
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by a database query.
28f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton *
29f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton * Cursor implementations are not required to be synchronized so code using a Cursor from multiple
30f3ca9a5c7e87319c934b5815566054d2e5c2085fJeff Hamilton * threads should perform its own synchronization when using the Cursor.
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
3203bd302aebbb77f4f95789a269c8a5463ac5a840Jeff Brownpublic interface Cursor extends Closeable {
338b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /*
348b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Values returned by {@link #getType(int)}.
358b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * These should be consistent with the corresponding types defined in CursorWindow.h
368b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     */
378b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column is null */
388b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_NULL = 0;
398b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
408b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified  column type is integer */
418b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_INTEGER = 1;
428b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
438b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is float */
448b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_FLOAT = 2;
458b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
468b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is string */
478b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_STRING = 3;
488b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
498b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /** Value returned by {@link #getType(int)} if the specified column type is blob */
508b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    static final int FIELD_TYPE_BLOB = 4;
518b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the numbers of rows in the cursor.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the number of rows in the cursor.
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getCount();
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the current position of the cursor in the row set.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The value is zero-based. When the row set is first returned the cursor
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will be at positon -1, which is before the first row. After the
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * last row is returned another call to next() will leave the cursor past
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the last entry, at a position of count().
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the current cursor position.
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPosition();
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor by a relative amount, forward or backward, from the
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * current position. Positive offsets move forwards, negative offsets move
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * backwards. If the final position is outside of the bounds of the result
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * set then the resultant position will be pinned to -1 or count() depending
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on whether the value is off the front or end of the set, respectively.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return true if the requested destination was
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reachable, otherwise, it returns false. For example, if the cursor is at
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * currently on the second entry in the result set and move(-5) is called,
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the position will be pinned at -1, and false will be returned.
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param offset the offset to be applied from the current position.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the requested move fully succeeded.
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean move(int offset);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to an absolute position. The valid
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * range of values is -1 &lt;= position &lt;= count.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return true if the request destination was reachable,
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * otherwise, it returns false.
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param position the zero-based position to move to.
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the requested move fully succeeded.
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToPosition(int position);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the first row.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is empty.
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToFirst();
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the last row.
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is empty.
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToLast();
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the next row.
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is already past the
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * last entry in the result set.
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToNext();
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Move the cursor to the previous row.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>This method will return false if the cursor is already before the
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * first entry in the result set.
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the move succeeded.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean moveToPrevious();
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the first row.
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is pointing at the first entry.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isFirst();
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the last row.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is pointing at the last entry.
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isLast();
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the position before the first
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * row.
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is before the first result.
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isBeforeFirst();
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns whether the cursor is pointing to the position after the last
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * row.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the cursor is after the last result.
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isAfterLast();
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the zero-based index for the given column name, or -1 if the column doesn't exist.
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If you expect the column to exist use {@link #getColumnIndexOrThrow(String)} instead, which
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will make the error more clear.
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnName the name of the target column.
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the zero-based column index for the given column name, or -1 if
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the column name does not exist.
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getColumnIndexOrThrow(String)
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnIndex(String columnName);
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the zero-based index for the given column name, or throws
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link IllegalArgumentException} if the column doesn't exist. If you're not sure if
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a column will exist or not use {@link #getColumnIndex(String)} and check for -1, which
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is more efficient than catching the exceptions.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnName the name of the target column.
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the zero-based column index for the given column name
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getColumnIndex(String)
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws IllegalArgumentException if the column does not exist
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException;
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the column name at the given zero-based column index.
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the column name for the given column index.
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getColumnName(int columnIndex);
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string array holding the names of all of the columns in the
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * result set in the order in which they were listed in the result.
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the names of the columns returned in this query.
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getColumnNames();
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return total number of columns
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return number of columns
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getColumnCount();
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a byte array.
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
21765068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
21865068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null or the column type is not a blob type is
21965068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * implementation-defined.
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a byte array.
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    byte[] getBlob(int columnIndex);
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a String.
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
22965068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
23065068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null or the column type is not a string type is
23165068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * implementation-defined.
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a String.
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getString(int columnIndex);
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the requested column text and stores it in the buffer provided.
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the buffer size is not sufficient, a new char buffer will be allocated
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and assigned to CharArrayBuffer.data
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        if the target column is null, return buffer
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param buffer the buffer to copy the text into.
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer);
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a short.
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
25165068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
25265068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null, the column type is not an integral type, or the
25365068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * integer value is outside the range [<code>Short.MIN_VALUE</code>,
25465068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <code>Short.MAX_VALUE</code>] is implementation-defined.
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a short.
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    short getShort(int columnIndex);
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as an int.
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
26465068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
26565068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null, the column type is not an integral type, or the
26665068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * integer value is outside the range [<code>Integer.MIN_VALUE</code>,
26765068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <code>Integer.MAX_VALUE</code>] is implementation-defined.
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as an int.
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getInt(int columnIndex);
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a long.
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
27765068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
27865068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null, the column type is not an integral type, or the
27965068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * integer value is outside the range [<code>Long.MIN_VALUE</code>,
28065068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <code>Long.MAX_VALUE</code>] is implementation-defined.
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 long.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    long getLong(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 float.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
29065068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
29165068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null, the column type is not a floating-point type, or the
29265068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * floating-point value is not representable as a <code>float</code> value is
29365068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * implementation-defined.
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a float.
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getFloat(int columnIndex);
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the requested column as a double.
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
30365068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * <p>The result and whether this method throws an exception when the
30465068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * column value is null, the column type is not a floating-point type, or the
30565068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * floating-point value is not representable as a <code>double</code> value is
30665068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * implementation-defined.
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value of that column as a double.
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    double getDouble(int columnIndex);
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3148b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Returns data type of the given column's value.
3158b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * The preferred type of the column is returned but the data may be converted to other types
3168b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * as documented in the get-type methods such as {@link #getInt(int)}, {@link #getFloat(int)}
3178b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * etc.
3188b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *<p>
3198b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * Returned column types are
3208b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * <ul>
3218b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_NULL}</li>
3228b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_INTEGER}</li>
3238b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_FLOAT}</li>
3248b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_STRING}</li>
3258b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *   <li>{@link #FIELD_TYPE_BLOB}</li>
3268b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *</ul>
3278b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *</p>
3288b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     *
3298b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * @param columnIndex the zero-based index of the target column.
3308b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     * @return column value type
3318b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori     */
3328b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    int getType(int columnIndex);
3338b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
3348b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    /**
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns <code>true</code> if the value in the indicated column is null.
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param columnIndex the zero-based index of the target column.
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether the column value is null.
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isNull(int columnIndex);
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Deactivates the Cursor, making all calls on it fail until {@link #requery} is called.
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Inactive Cursors use fewer resources than active Cursors.
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calling {@link #requery} will make the cursor active again.
34681e9276a479fd3a5ccc3129505c0fb018941934bDianne Hackborn     * @deprecated Since {@link #requery()} is deprecated, so too is this.
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void deactivate();
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Performs the query that created the cursor again, refreshing its
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contents. This may be done at any time, including after a call to {@link
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * #deactivate}.
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
35520f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * Since this method could execute a query on the database and potentially take
35620f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * a while, it could cause ANR if it is called on Main (UI) thread.
35720f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     * A warning is printed if this method is being executed on Main thread.
35820f549fd2f40db524242c9038d7d63356adf95fcVasu Nori     *
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the requery succeeded, false if not, in which case the
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         cursor becomes invalid.
361820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori     * @deprecated Don't use this. Just request a new cursor, so you can do this
362820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori     * asynchronously and update your list view once the new cursor comes back.
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
364820e9b6b9cea6cce8115339dd774cdc273c4d6daVasu Nori    @Deprecated
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean requery();
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Closes the Cursor, releasing all of its resources and making it completely invalid.
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unlike {@link #deactivate()} a call to {@link #requery()} will not make the Cursor valid
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * again.
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void close();
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * return true if the cursor is closed
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the cursor is closed.
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isClosed();
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register an observer that is called when changes happen to the content backing this cursor.
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Typically the data set won't change until {@link #requery()} is called.
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object that gets notified when the content backing the cursor changes.
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterContentObserver(ContentObserver)
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerContentObserver(ContentObserver observer);
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister an observer that has previously been registered with this
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cursor via {@link #registerContentObserver}.
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object to unregister.
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerContentObserver(ContentObserver)
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterContentObserver(ContentObserver observer);
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register an observer that is called when changes happen to the contents
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of the this cursors data set, for example, when the data set is changed via
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #requery()}, {@link #deactivate()}, or {@link #close()}.
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object that gets notified when the cursors data set changes.
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unregisterDataSetObserver(DataSetObserver)
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerDataSetObserver(DataSetObserver observer);
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister an observer that has previously been registered with this
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cursor via {@link #registerContentObserver}.
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer the object to unregister.
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #registerDataSetObserver(DataSetObserver)
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterDataSetObserver(DataSetObserver observer);
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register to watch a content URI for changes. This can be the URI of a specific data row (for
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * example, "content://my_provider_type/23"), or a a generic URI for a content type.
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cr The content resolver from the caller's context. The listener attached to
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this resolver will be notified.
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param uri The content URI to watch.
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setNotificationUri(ContentResolver cr, Uri uri);
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * onMove() will only be called across processes if this method returns true.
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return whether all cursor movement should result in a call to onMove().
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getWantsAllOnMoveCalls();
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a bundle of extra values. This is an optional way for cursors to provide out-of-band
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * metadata to their users. One use of this is for reporting on the progress of network requests
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that are required to fetch data for the cursor.
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>These values may only change when requery is called.
43965068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * @return cursor-defined values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY} if there
44065068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     *         are no values. Never <code>null</code>.
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle getExtras();
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is an out-of-band way for the the user of a cursor to communicate with the cursor. The
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * structure of each bundle is entirely defined by the cursor.
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>One use of this is to tell a cursor that it should retry its network request after it
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reported an error.
45065068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * @param extras extra values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY}.
45165068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     *         Never <code>null</code>.
45265068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     * @return extra values, or {@link android.os.Bundle#EMPTY Bundle.EMPTY}.
45365068b099e0f54bea44a353751a2654991e2df29Daniel Trebbien     *         Never <code>null</code>.
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Bundle respond(Bundle extras);
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
457