Skip to content

Most visited

Recently visited

navigation

DatabaseUtils

public class DatabaseUtils
extends Object

java.lang.Object
   ↳ android.database.DatabaseUtils


Static utility methods for dealing with databases and Cursors.

Summary

Nested classes

class DatabaseUtils.InsertHelper

This class was deprecated in API level 17. Use SQLiteStatement instead.  

Constants

int STATEMENT_ABORT

One of the values returned by getSqlStatementType(String).

int STATEMENT_ATTACH

One of the values returned by getSqlStatementType(String).

int STATEMENT_BEGIN

One of the values returned by getSqlStatementType(String).

int STATEMENT_COMMIT

One of the values returned by getSqlStatementType(String).

int STATEMENT_DDL

One of the values returned by getSqlStatementType(String).

int STATEMENT_OTHER

One of the values returned by getSqlStatementType(String).

int STATEMENT_PRAGMA

One of the values returned by getSqlStatementType(String).

int STATEMENT_SELECT

One of the values returned by getSqlStatementType(String).

int STATEMENT_UNPREPARED

One of the values returned by getSqlStatementType(String).

int STATEMENT_UPDATE

One of the values returned by getSqlStatementType(String).

Public constructors

DatabaseUtils()

Public methods

static void appendEscapedSQLString(StringBuilder sb, String sqlString)

Appends an SQL string to the given StringBuilder, including the opening and closing single quotes.

static String[] appendSelectionArgs(String[] originalValues, String[] newValues)

Appends one set of selection args to another.

static final void appendValueToSql(StringBuilder sql, Object value)

Appends an Object to an SQL string with the proper escaping, etc.

static void bindObjectToProgram(SQLiteProgram prog, int index, Object value)

Binds the given Object to the given SQLiteProgram using the proper typing.

static ParcelFileDescriptor blobFileDescriptorForQuery(SQLiteStatement prog, String[] selectionArgs)

Utility method to run the pre-compiled query and return the blob value in the first column of the first row.

static ParcelFileDescriptor blobFileDescriptorForQuery(SQLiteDatabase db, String query, String[] selectionArgs)

Utility method to run the query on the db and return the blob value in the first column of the first row.

static String concatenateWhere(String a, String b)

Concatenates two SQL WHERE clauses, handling empty or null values.

static void createDbFromSqlStatements(Context context, String dbName, int dbVersion, String sqlStatements)

Creates a db and populates it with the sql statements in sqlStatements.

static void cursorDoubleToContentValues(Cursor cursor, String field, ContentValues values, String key)

Reads a Double out of a field in a Cursor and writes it to a Map.

static void cursorDoubleToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a Double out of a column in a Cursor and writes it to a ContentValues.

static void cursorDoubleToCursorValues(Cursor cursor, String field, ContentValues values)

Reads a Double out of a field in a Cursor and writes it to a Map.

static void cursorFloatToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a Float out of a column in a Cursor and writes it to a ContentValues.

static void cursorIntToContentValues(Cursor cursor, String field, ContentValues values, String key)

Reads a Integer out of a field in a Cursor and writes it to a Map.

static void cursorIntToContentValues(Cursor cursor, String field, ContentValues values)

Reads an Integer out of a field in a Cursor and writes it to a Map.

static void cursorIntToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a Integer out of a column in a Cursor and writes it to a ContentValues.

static void cursorLongToContentValues(Cursor cursor, String field, ContentValues values, String key)

Reads a Long out of a field in a Cursor and writes it to a Map.

static void cursorLongToContentValues(Cursor cursor, String field, ContentValues values)

Reads a Long out of a field in a Cursor and writes it to a Map.

static void cursorLongToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a Long out of a column in a Cursor and writes it to a ContentValues.

static void cursorRowToContentValues(Cursor cursor, ContentValues values)

Read the entire contents of a cursor row and store them in a ContentValues.

static void cursorShortToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a Short out of a column in a Cursor and writes it to a ContentValues.

static void cursorStringToContentValues(Cursor cursor, String field, ContentValues values, String key)

Reads a String out of a field in a Cursor and writes it to a Map.

static void cursorStringToContentValues(Cursor cursor, String field, ContentValues values)

Reads a String out of a field in a Cursor and writes it to a Map.

static void cursorStringToContentValuesIfPresent(Cursor cursor, ContentValues values, String column)

Reads a String out of a column in a Cursor and writes it to a ContentValues.

static void cursorStringToInsertHelper(Cursor cursor, String field, DatabaseUtils.InsertHelper inserter, int index)

Reads a String out of a field in a Cursor and writes it to an InsertHelper.

static void dumpCurrentRow(Cursor cursor, StringBuilder sb)

Prints the contents of a Cursor's current row to a StringBuilder.

static void dumpCurrentRow(Cursor cursor, PrintStream stream)

Prints the contents of a Cursor's current row to a PrintSteam.

static void dumpCurrentRow(Cursor cursor)

Prints the contents of a Cursor's current row to System.out.

static String dumpCurrentRowToString(Cursor cursor)

Dump the contents of a Cursor's current row to a String.

static void dumpCursor(Cursor cursor, PrintStream stream)

Prints the contents of a Cursor to a PrintSteam.

static void dumpCursor(Cursor cursor)

Prints the contents of a Cursor to System.out.

static void dumpCursor(Cursor cursor, StringBuilder sb)

Prints the contents of a Cursor to a StringBuilder.

static String dumpCursorToString(Cursor cursor)

Prints the contents of a Cursor to a String.

static String getCollationKey(String name)

return the collation key

static String getHexCollationKey(String name)

return the collation key in hex format

static int getSqlStatementType(String sql)

Returns one of the following which represent the type of the given SQL statement.

static long longForQuery(SQLiteDatabase db, String query, String[] selectionArgs)

Utility method to run the query on the db and return the value in the first column of the first row.

static long longForQuery(SQLiteStatement prog, String[] selectionArgs)

Utility method to run the pre-compiled query and return the value in the first column of the first row.

static long queryNumEntries(SQLiteDatabase db, String table, String selection)

Query the table for the number of rows in the table.

static long queryNumEntries(SQLiteDatabase db, String table, String selection, String[] selectionArgs)

Query the table for the number of rows in the table.

static long queryNumEntries(SQLiteDatabase db, String table)

Query the table for the number of rows in the table.

static final void readExceptionFromParcel(Parcel reply)

Special function for reading an exception result from the header of a parcel, to be used after receiving the result of a transaction.

static void readExceptionWithFileNotFoundExceptionFromParcel(Parcel reply)
static void readExceptionWithOperationApplicationExceptionFromParcel(Parcel reply)
static String sqlEscapeString(String value)

SQL-escape a string.

static String stringForQuery(SQLiteDatabase db, String query, String[] selectionArgs)

Utility method to run the query on the db and return the value in the first column of the first row.

static String stringForQuery(SQLiteStatement prog, String[] selectionArgs)

Utility method to run the pre-compiled query and return the value in the first column of the first row.

static final void writeExceptionToParcel(Parcel reply, Exception e)

Special function for writing an exception result at the header of a parcel, to be used when returning an exception from a transaction.

Inherited methods

From class java.lang.Object

Constants

STATEMENT_ABORT

Added in API level 11
int STATEMENT_ABORT

One of the values returned by getSqlStatementType(String).

Constant Value: 6 (0x00000006)

STATEMENT_ATTACH

Added in API level 11
int STATEMENT_ATTACH

One of the values returned by getSqlStatementType(String).

Constant Value: 3 (0x00000003)

STATEMENT_BEGIN

Added in API level 11
int STATEMENT_BEGIN

One of the values returned by getSqlStatementType(String).

Constant Value: 4 (0x00000004)

STATEMENT_COMMIT

Added in API level 11
int STATEMENT_COMMIT

One of the values returned by getSqlStatementType(String).

Constant Value: 5 (0x00000005)

STATEMENT_DDL

Added in API level 11
int STATEMENT_DDL

One of the values returned by getSqlStatementType(String).

Constant Value: 8 (0x00000008)

STATEMENT_OTHER

Added in API level 11
int STATEMENT_OTHER

One of the values returned by getSqlStatementType(String).

Constant Value: 99 (0x00000063)

STATEMENT_PRAGMA

Added in API level 11
int STATEMENT_PRAGMA

One of the values returned by getSqlStatementType(String).

Constant Value: 7 (0x00000007)

STATEMENT_SELECT

Added in API level 11
int STATEMENT_SELECT

One of the values returned by getSqlStatementType(String).

Constant Value: 1 (0x00000001)

STATEMENT_UNPREPARED

Added in API level 11
int STATEMENT_UNPREPARED

One of the values returned by getSqlStatementType(String).

Constant Value: 9 (0x00000009)

STATEMENT_UPDATE

Added in API level 11
int STATEMENT_UPDATE

One of the values returned by getSqlStatementType(String).

Constant Value: 2 (0x00000002)

Public constructors

DatabaseUtils

Added in API level 1
DatabaseUtils ()

Public methods

appendEscapedSQLString

Added in API level 1
void appendEscapedSQLString (StringBuilder sb, 
                String sqlString)

Appends an SQL string to the given StringBuilder, including the opening and closing single quotes. Any single quotes internal to sqlString will be escaped. This method is deprecated because we want to encourage everyone to use the "?" binding form. However, when implementing a ContentProvider, one may want to add WHERE clauses that were not provided by the caller. Since "?" is a positional form, using it in this case could break the caller because the indexes would be shifted to accomodate the ContentProvider's internal bindings. In that case, it may be necessary to construct a WHERE clause manually. This method is useful for those cases.

Parameters
sb StringBuilder: the StringBuilder that the SQL string will be appended to
sqlString String: the raw string to be appended, which may contain single quotes

appendSelectionArgs

Added in API level 11
String[] appendSelectionArgs (String[] originalValues, 
                String[] newValues)

Appends one set of selection args to another. This is useful when adding a selection argument to a user provided set.

Parameters
originalValues String
newValues String
Returns
String[]

appendValueToSql

Added in API level 1
void appendValueToSql (StringBuilder sql, 
                Object value)

Appends an Object to an SQL string with the proper escaping, etc.

Parameters
sql StringBuilder
value Object

bindObjectToProgram

Added in API level 1
void bindObjectToProgram (SQLiteProgram prog, 
                int index, 
                Object value)

Binds the given Object to the given SQLiteProgram using the proper typing. For example, bind numbers as longs/doubles, and everything else as a string by call toString() on it.

Parameters
prog SQLiteProgram: the program to bind the object to
index int: the 1-based index to bind at
value Object: the value to bind

blobFileDescriptorForQuery

Added in API level 11
ParcelFileDescriptor blobFileDescriptorForQuery (SQLiteStatement prog, 
                String[] selectionArgs)

Utility method to run the pre-compiled query and return the blob value in the first column of the first row.

Parameters
prog SQLiteStatement
selectionArgs String
Returns
ParcelFileDescriptor A read-only file descriptor for a copy of the blob value.

blobFileDescriptorForQuery

Added in API level 11
ParcelFileDescriptor blobFileDescriptorForQuery (SQLiteDatabase db, 
                String query, 
                String[] selectionArgs)

Utility method to run the query on the db and return the blob value in the first column of the first row.

Parameters
db SQLiteDatabase
query String
selectionArgs String
Returns
ParcelFileDescriptor A read-only file descriptor for a copy of the blob value.

concatenateWhere

Added in API level 11
String concatenateWhere (String a, 
                String b)

Concatenates two SQL WHERE clauses, handling empty or null values.

Parameters
a String
b String
Returns
String

createDbFromSqlStatements

Added in API level 1
void createDbFromSqlStatements (Context context, 
                String dbName, 
                int dbVersion, 
                String sqlStatements)

Creates a db and populates it with the sql statements in sqlStatements.

Parameters
context Context: the context to use to create the db
dbName String: the name of the db to create
dbVersion int: the version to set on the db
sqlStatements String: the statements to use to populate the db. This should be a single string of the form returned by sqlite3's .dump command (statements separated by semicolons)

cursorDoubleToContentValues

Added in API level 1
void cursorDoubleToContentValues (Cursor cursor, 
                String field, 
                ContentValues values, 
                String key)

Reads a Double out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The REAL field to read
values ContentValues: The ContentValues to put the value into
key String: The key to store the value with in the map

cursorDoubleToContentValuesIfPresent

Added in API level 8
void cursorDoubleToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a Double out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorDoubleToCursorValues

Added in API level 1
void cursorDoubleToCursorValues (Cursor cursor, 
                String field, 
                ContentValues values)

Reads a Double out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The REAL field to read
values ContentValues: The ContentValues to put the value into

cursorFloatToContentValuesIfPresent

Added in API level 8
void cursorFloatToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a Float out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorIntToContentValues

Added in API level 1
void cursorIntToContentValues (Cursor cursor, 
                String field, 
                ContentValues values, 
                String key)

Reads a Integer out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The INTEGER field to read
values ContentValues: The ContentValues to put the value into, with the field as the key
key String: The key to store the value with in the map

cursorIntToContentValues

Added in API level 1
void cursorIntToContentValues (Cursor cursor, 
                String field, 
                ContentValues values)

Reads an Integer out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The INTEGER field to read
values ContentValues: The ContentValues to put the value into, with the field as the key

cursorIntToContentValuesIfPresent

Added in API level 8
void cursorIntToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a Integer out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorLongToContentValues

Added in API level 1
void cursorLongToContentValues (Cursor cursor, 
                String field, 
                ContentValues values, 
                String key)

Reads a Long out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The INTEGER field to read
values ContentValues: The ContentValues to put the value into
key String: The key to store the value with in the map

cursorLongToContentValues

Added in API level 1
void cursorLongToContentValues (Cursor cursor, 
                String field, 
                ContentValues values)

Reads a Long out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The INTEGER field to read
values ContentValues: The ContentValues to put the value into, with the field as the key

cursorLongToContentValuesIfPresent

Added in API level 8
void cursorLongToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a Long out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorRowToContentValues

Added in API level 1
void cursorRowToContentValues (Cursor cursor, 
                ContentValues values)

Read the entire contents of a cursor row and store them in a ContentValues.

Parameters
cursor Cursor: the cursor to read from.
values ContentValues: the ContentValues to put the row into.

cursorShortToContentValuesIfPresent

Added in API level 8
void cursorShortToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a Short out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorStringToContentValues

Added in API level 1
void cursorStringToContentValues (Cursor cursor, 
                String field, 
                ContentValues values, 
                String key)

Reads a String out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The TEXT field to read
values ContentValues: The ContentValues to put the value into, with the field as the key
key String: The key to store the value with in the map

cursorStringToContentValues

Added in API level 1
void cursorStringToContentValues (Cursor cursor, 
                String field, 
                ContentValues values)

Reads a String out of a field in a Cursor and writes it to a Map.

Parameters
cursor Cursor: The cursor to read from
field String: The TEXT field to read
values ContentValues: The ContentValues to put the value into, with the field as the key

cursorStringToContentValuesIfPresent

Added in API level 8
void cursorStringToContentValuesIfPresent (Cursor cursor, 
                ContentValues values, 
                String column)

Reads a String out of a column in a Cursor and writes it to a ContentValues. Adds nothing to the ContentValues if the column isn't present or if its value is null.

Parameters
cursor Cursor: The cursor to read from
values ContentValues: The ContentValues to put the value into
column String: The column to read

cursorStringToInsertHelper

Added in API level 1
void cursorStringToInsertHelper (Cursor cursor, 
                String field, 
                DatabaseUtils.InsertHelper inserter, 
                int index)

Reads a String out of a field in a Cursor and writes it to an InsertHelper.

Parameters
cursor Cursor: The cursor to read from
field String: The TEXT field to read
inserter DatabaseUtils.InsertHelper: The InsertHelper to bind into
index int: the index of the bind entry in the InsertHelper

dumpCurrentRow

Added in API level 1
void dumpCurrentRow (Cursor cursor, 
                StringBuilder sb)

Prints the contents of a Cursor's current row to a StringBuilder.

Parameters
cursor Cursor: the cursor to print
sb StringBuilder: the StringBuilder to print to

dumpCurrentRow

Added in API level 1
void dumpCurrentRow (Cursor cursor, 
                PrintStream stream)

Prints the contents of a Cursor's current row to a PrintSteam.

Parameters
cursor Cursor: the cursor to print
stream PrintStream: the stream to print to

dumpCurrentRow

Added in API level 1
void dumpCurrentRow (Cursor cursor)

Prints the contents of a Cursor's current row to System.out.

Parameters
cursor Cursor: the cursor to print from

dumpCurrentRowToString

Added in API level 1
String dumpCurrentRowToString (Cursor cursor)

Dump the contents of a Cursor's current row to a String.

Parameters
cursor Cursor: the cursor to print
Returns
String a String that contains the dumped cursor row

dumpCursor

Added in API level 1
void dumpCursor (Cursor cursor, 
                PrintStream stream)

Prints the contents of a Cursor to a PrintSteam. The position is restored after printing.

Parameters
cursor Cursor: the cursor to print
stream PrintStream: the stream to print to

dumpCursor

Added in API level 1
void dumpCursor (Cursor cursor)

Prints the contents of a Cursor to System.out. The position is restored after printing.

Parameters
cursor Cursor: the cursor to print

dumpCursor

Added in API level 1
void dumpCursor (Cursor cursor, 
                StringBuilder sb)

Prints the contents of a Cursor to a StringBuilder. The position is restored after printing.

Parameters
cursor Cursor: the cursor to print
sb StringBuilder: the StringBuilder to print to

dumpCursorToString

Added in API level 1
String dumpCursorToString (Cursor cursor)

Prints the contents of a Cursor to a String. The position is restored after printing.

Parameters
cursor Cursor: the cursor to print
Returns
String a String that contains the dumped cursor

getCollationKey

Added in API level 1
String getCollationKey (String name)

return the collation key

Returns
String the collation key

getHexCollationKey

Added in API level 1
String getHexCollationKey (String name)

return the collation key in hex format

Returns
String the collation key in hex format

getSqlStatementType

Added in API level 11
int getSqlStatementType (String sql)

Returns one of the following which represent the type of the given SQL statement.

  1. STATEMENT_SELECT
  2. STATEMENT_UPDATE
  3. STATEMENT_ATTACH
  4. STATEMENT_BEGIN
  5. STATEMENT_COMMIT
  6. STATEMENT_ABORT
  7. STATEMENT_OTHER

Parameters
sql String: the SQL statement whose type is returned by this method
Returns
int one of the values listed above

longForQuery

Added in API level 1
long longForQuery (SQLiteDatabase db, 
                String query, 
                String[] selectionArgs)

Utility method to run the query on the db and return the value in the first column of the first row.

Parameters
db SQLiteDatabase
query String
selectionArgs String
Returns
long

longForQuery

Added in API level 1
long longForQuery (SQLiteStatement prog, 
                String[] selectionArgs)

Utility method to run the pre-compiled query and return the value in the first column of the first row.

Parameters
prog SQLiteStatement
selectionArgs String
Returns
long

queryNumEntries

Added in API level 11
long queryNumEntries (SQLiteDatabase db, 
                String table, 
                String selection)

Query the table for the number of rows in the table.

Parameters
db SQLiteDatabase: the database the table is in
table String: the name of the table to query
selection String: A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will count all rows for the given table
Returns
long the number of rows in the table filtered by the selection

queryNumEntries

Added in API level 11
long queryNumEntries (SQLiteDatabase db, 
                String table, 
                String selection, 
                String[] selectionArgs)

Query the table for the number of rows in the table.

Parameters
db SQLiteDatabase: the database the table is in
table String: the name of the table to query
selection String: A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will count all rows for the given table
selectionArgs String: You may include ?s in selection, which will be replaced by the values from selectionArgs, in order that they appear in the selection. The values will be bound as Strings.
Returns
long the number of rows in the table filtered by the selection

queryNumEntries

Added in API level 1
long queryNumEntries (SQLiteDatabase db, 
                String table)

Query the table for the number of rows in the table.

Parameters
db SQLiteDatabase: the database the table is in
table String: the name of the table to query
Returns
long the number of rows in the table

readExceptionFromParcel

Added in API level 1
void readExceptionFromParcel (Parcel reply)

Special function for reading an exception result from the header of a parcel, to be used after receiving the result of a transaction. This will throw the exception for you if it had been written to the Parcel, otherwise return and let you read the normal result data from the Parcel.

Parameters
reply Parcel: Parcel to read from

See also:

readExceptionWithFileNotFoundExceptionFromParcel

Added in API level 1
void readExceptionWithFileNotFoundExceptionFromParcel (Parcel reply)

Parameters
reply Parcel
Throws
FileNotFoundException

readExceptionWithOperationApplicationExceptionFromParcel

Added in API level 5
void readExceptionWithOperationApplicationExceptionFromParcel (Parcel reply)

Parameters
reply Parcel
Throws
OperationApplicationException

sqlEscapeString

Added in API level 1
String sqlEscapeString (String value)

SQL-escape a string.

Parameters
value String
Returns
String

stringForQuery

Added in API level 1
String stringForQuery (SQLiteDatabase db, 
                String query, 
                String[] selectionArgs)

Utility method to run the query on the db and return the value in the first column of the first row.

Parameters
db SQLiteDatabase
query String
selectionArgs String
Returns
String

stringForQuery

Added in API level 1
String stringForQuery (SQLiteStatement prog, 
                String[] selectionArgs)

Utility method to run the pre-compiled query and return the value in the first column of the first row.

Parameters
prog SQLiteStatement
selectionArgs String
Returns
String

writeExceptionToParcel

Added in API level 1
void writeExceptionToParcel (Parcel reply, 
                Exception e)

Special function for writing an exception result at the header of a parcel, to be used when returning an exception from a transaction. exception will be re-thrown by the function in another process

Parameters
reply Parcel: Parcel to write to
e Exception: The Exception to be written.

See also:

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.