Merge "new API in Context. on openDatabase, new param DatabaseErrorHandler"
This commit is contained in:
@@ -39461,6 +39461,25 @@
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="openOrCreateDatabase"
|
||||
return="android.database.sqlite.SQLiteDatabase"
|
||||
abstract="true"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="name" type="java.lang.String">
|
||||
</parameter>
|
||||
<parameter name="mode" type="int">
|
||||
</parameter>
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
<parameter name="errorHandler" type="android.database.DatabaseErrorHandler">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="peekWallpaper"
|
||||
return="android.graphics.drawable.Drawable"
|
||||
abstract="true"
|
||||
@@ -40888,6 +40907,25 @@
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="openOrCreateDatabase"
|
||||
return="android.database.sqlite.SQLiteDatabase"
|
||||
abstract="false"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="name" type="java.lang.String">
|
||||
</parameter>
|
||||
<parameter name="mode" type="int">
|
||||
</parameter>
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
<parameter name="errorHandler" type="android.database.DatabaseErrorHandler">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="peekWallpaper"
|
||||
return="android.graphics.drawable.Drawable"
|
||||
abstract="false"
|
||||
@@ -61029,6 +61067,24 @@
|
||||
<parameter name="version" type="int">
|
||||
</parameter>
|
||||
</constructor>
|
||||
<constructor name="SQLiteOpenHelper"
|
||||
type="android.database.sqlite.SQLiteOpenHelper"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="context" type="android.content.Context">
|
||||
</parameter>
|
||||
<parameter name="name" type="java.lang.String">
|
||||
</parameter>
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
<parameter name="version" type="int">
|
||||
</parameter>
|
||||
<parameter name="errorHandler" type="android.database.DatabaseErrorHandler">
|
||||
</parameter>
|
||||
</constructor>
|
||||
<method name="close"
|
||||
return="void"
|
||||
abstract="false"
|
||||
@@ -155111,6 +155167,25 @@
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="openOrCreateDatabase"
|
||||
return="android.database.sqlite.SQLiteDatabase"
|
||||
abstract="false"
|
||||
native="false"
|
||||
synchronized="false"
|
||||
static="false"
|
||||
final="false"
|
||||
deprecated="not deprecated"
|
||||
visibility="public"
|
||||
>
|
||||
<parameter name="file" type="java.lang.String">
|
||||
</parameter>
|
||||
<parameter name="mode" type="int">
|
||||
</parameter>
|
||||
<parameter name="factory" type="android.database.sqlite.SQLiteDatabase.CursorFactory">
|
||||
</parameter>
|
||||
<parameter name="errorHandler" type="android.database.DatabaseErrorHandler">
|
||||
</parameter>
|
||||
</method>
|
||||
<method name="peekWallpaper"
|
||||
return="android.graphics.drawable.Drawable"
|
||||
abstract="false"
|
||||
|
||||
@@ -57,6 +57,7 @@ import android.content.pm.PackageParser.Package;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.XmlResourceParser;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -542,6 +543,15 @@ class ContextImpl extends Context {
|
||||
return db;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
|
||||
DatabaseErrorHandler errorHandler) {
|
||||
File f = validateFilePath(name, true);
|
||||
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(f.getPath(), factory, errorHandler);
|
||||
setFilePermissionsFromMode(f.getPath(), mode, 0);
|
||||
return db;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteDatabase(String name) {
|
||||
try {
|
||||
|
||||
@@ -21,6 +21,8 @@ import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.DefaultDatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -587,6 +589,32 @@ public abstract class Context {
|
||||
public abstract SQLiteDatabase openOrCreateDatabase(String name,
|
||||
int mode, CursorFactory factory);
|
||||
|
||||
/**
|
||||
* Open a new private SQLiteDatabase associated with this Context's
|
||||
* application package. Creates the database file if it doesn't exist.
|
||||
*
|
||||
* <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be
|
||||
* used to handle corruption when sqlite reports database corruption.</p>
|
||||
*
|
||||
* @param name The name (unique in the application package) of the database.
|
||||
* @param mode Operating mode. Use 0 or {@link #MODE_PRIVATE} for the
|
||||
* default operation, {@link #MODE_WORLD_READABLE}
|
||||
* and {@link #MODE_WORLD_WRITEABLE} to control permissions.
|
||||
* @param factory An optional factory class that is called to instantiate a
|
||||
* cursor when query is called.
|
||||
* @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database
|
||||
* corruption. if null, {@link DefaultDatabaseErrorHandler} is assumed.
|
||||
* @return The contents of a newly created database with the given name.
|
||||
* @throws android.database.sqlite.SQLiteException if the database file could not be opened.
|
||||
*
|
||||
* @see #MODE_PRIVATE
|
||||
* @see #MODE_WORLD_READABLE
|
||||
* @see #MODE_WORLD_WRITEABLE
|
||||
* @see #deleteDatabase
|
||||
*/
|
||||
public abstract SQLiteDatabase openOrCreateDatabase(String name,
|
||||
int mode, CursorFactory factory, DatabaseErrorHandler errorHandler);
|
||||
|
||||
/**
|
||||
* Delete an existing private SQLiteDatabase associated with this Context's
|
||||
* application package.
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.res.Resources;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -203,6 +204,12 @@ public class ContextWrapper extends Context {
|
||||
return mBase.openOrCreateDatabase(name, mode, factory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
|
||||
DatabaseErrorHandler errorHandler) {
|
||||
return mBase.openOrCreateDatabase(name, mode, factory, errorHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteDatabase(String name) {
|
||||
return mBase.deleteDatabase(name);
|
||||
|
||||
@@ -837,10 +837,23 @@ public class SQLiteDatabase extends SQLiteClosable {
|
||||
}
|
||||
|
||||
/**
|
||||
* same as {@link #openDatabase(String, CursorFactory, int)} except for an additional param
|
||||
* errorHandler.
|
||||
* @param errorHandler the {@link DatabaseErrorHandler} obj to be used when database
|
||||
* corruption is detected on the database.
|
||||
* Open the database according to the flags {@link #OPEN_READWRITE}
|
||||
* {@link #OPEN_READONLY} {@link #CREATE_IF_NECESSARY} and/or {@link #NO_LOCALIZED_COLLATORS}.
|
||||
*
|
||||
* <p>Sets the locale of the database to the the system's current locale.
|
||||
* Call {@link #setLocale} if you would like something else.</p>
|
||||
*
|
||||
* <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be
|
||||
* used to handle corruption when sqlite reports database corruption.</p>
|
||||
*
|
||||
* @param path to database file to open and/or create
|
||||
* @param factory an optional factory class that is called to instantiate a
|
||||
* cursor when query is called, or null for default
|
||||
* @param flags to control database access mode
|
||||
* @param errorHandler the {@link DatabaseErrorHandler} obj to be used to handle corruption
|
||||
* when sqlite reports database corruption
|
||||
* @return the newly opened database
|
||||
* @throws SQLiteException if the database cannot be opened
|
||||
*/
|
||||
public static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags,
|
||||
DatabaseErrorHandler errorHandler) {
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package android.database.sqlite;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.DefaultDatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -39,6 +41,7 @@ public abstract class SQLiteOpenHelper {
|
||||
|
||||
private SQLiteDatabase mDatabase = null;
|
||||
private boolean mIsInitializing = false;
|
||||
private final DatabaseErrorHandler mErrorHandler;
|
||||
|
||||
/**
|
||||
* Create a helper object to create, open, and/or manage a database.
|
||||
@@ -52,12 +55,37 @@ public abstract class SQLiteOpenHelper {
|
||||
* {@link #onUpgrade} will be used to upgrade the database
|
||||
*/
|
||||
public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {
|
||||
this(context, name, factory, version, new DefaultDatabaseErrorHandler());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a helper object to create, open, and/or manage a database.
|
||||
* The database is not actually created or opened until one of
|
||||
* {@link #getWritableDatabase} or {@link #getReadableDatabase} is called.
|
||||
*
|
||||
* <p>Accepts input param: a concrete instance of {@link DatabaseErrorHandler} to be
|
||||
* used to handle corruption when sqlite reports database corruption.</p>
|
||||
*
|
||||
* @param context to use to open or create the database
|
||||
* @param name of the database file, or null for an in-memory database
|
||||
* @param factory to use for creating cursor objects, or null for the default
|
||||
* @param version number of the database (starting at 1); if the database is older,
|
||||
* {@link #onUpgrade} will be used to upgrade the database
|
||||
* @param errorHandler the {@link DatabaseErrorHandler} to be used when sqlite reports database
|
||||
* corruption.
|
||||
*/
|
||||
public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version,
|
||||
DatabaseErrorHandler errorHandler) {
|
||||
if (version < 1) throw new IllegalArgumentException("Version must be >= 1, was " + version);
|
||||
if (errorHandler == null) {
|
||||
throw new IllegalArgumentException("DatabaseErrorHandler param value can't be null.");
|
||||
}
|
||||
|
||||
mContext = context;
|
||||
mName = name;
|
||||
mFactory = factory;
|
||||
mNewVersion = version;
|
||||
mErrorHandler = errorHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -95,7 +123,7 @@ public abstract class SQLiteOpenHelper {
|
||||
if (mName == null) {
|
||||
db = SQLiteDatabase.create(null);
|
||||
} else {
|
||||
db = mContext.openOrCreateDatabase(mName, 0, mFactory);
|
||||
db = mContext.openOrCreateDatabase(mName, 0, mFactory, mErrorHandler);
|
||||
}
|
||||
|
||||
int version = db.getVersion();
|
||||
@@ -169,7 +197,8 @@ public abstract class SQLiteOpenHelper {
|
||||
try {
|
||||
mIsInitializing = true;
|
||||
String path = mContext.getDatabasePath(mName).getPath();
|
||||
db = SQLiteDatabase.openDatabase(path, mFactory, SQLiteDatabase.OPEN_READONLY);
|
||||
db = SQLiteDatabase.openDatabase(path, mFactory, SQLiteDatabase.OPEN_READONLY,
|
||||
mErrorHandler);
|
||||
if (db.getVersion() != mNewVersion) {
|
||||
throw new SQLiteException("Can't upgrade read-only database from version " +
|
||||
db.getVersion() + " to " + mNewVersion + ": " + path);
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.res.Resources;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@@ -183,6 +184,12 @@ public class MockContext extends Context {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLiteDatabase openOrCreateDatabase(String file, int mode,
|
||||
SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getDatabasePath(String name) {
|
||||
throw new UnsupportedOperationException();
|
||||
|
||||
@@ -37,6 +37,7 @@ import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.content.res.Resources.Theme;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -1058,6 +1059,13 @@ public final class BridgeContext extends Context {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLiteDatabase openOrCreateDatabase(String arg0, int arg1,
|
||||
CursorFactory arg2, DatabaseErrorHandler arg3) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable peekWallpaper() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
Reference in New Issue
Block a user