Android 无法解析方法';重新打开readwrite()';

Android 无法解析方法';重新打开readwrite()';,android,sqlite,sqliteopenhelper,Android,Sqlite,Sqliteopenhelper,我正在尝试创建一个登录页面,并使用SQLiteOpenHelper类连接到SQLite数据库。但是SQLiteOpenHelper.java中的默认代码在db.readwrite()行显示错误; 我检查了SQLiteDatabase.java文件是否具有REPOREADWRITE()方法; 您能帮我解决这个问题吗?这个方法是隐藏的,您可以在中看到: /** *以读写模式重新打开数据库。 *如果数据库已经读写,则不执行任何操作。 * *@如果无法按请求重新打开数据库,则抛出SQLiteExcept

我正在尝试创建一个登录页面,并使用SQLiteOpenHelper类连接到SQLite数据库。但是SQLiteOpenHelper.java中的默认代码在db.readwrite()行显示错误; 我检查了SQLiteDatabase.java文件是否具有REPOREADWRITE()方法;
您能帮我解决这个问题吗?

这个方法是隐藏的,您可以在中看到:

/**
*以读写模式重新打开数据库。
*如果数据库已经读写,则不执行任何操作。
*
*@如果无法按请求重新打开数据库,则抛出SQLiteException,其中
*外壳在只读模式下保持打开状态。
*如果数据库未打开,@将引发IllegalStateException。
*
*@see#isReadOnly()
*@隐藏
*/
public-void-readwrite(){
已同步(mLock){
throwIfNotOpenLocked();
如果(!isReadOnlyLocked()){
return;//无事可做
}
//以读写模式重新打开数据库。
final int oldOpenFlags=mConfigurationLocked.openFlags;
mConfigurationLocked.openFlags=(mConfigurationLocked.openFlags&~OPEN\u READ\u MASK)
|打开读写;
试一试{
mConnectionPoolLocked.重新配置(mConfigurationLocked);
}捕获(RuntimeException ex){
mConfigurationLocked.openFlags=oldOpenFlags;
掷骰子;
}
}
}
因为它不是公共API的一部分,所以如果不使用反射,就不能使用该方法

最好的方法是只使用公共API中的方法

您需要的只是
SQLiteOpenHelper#getReadableDatabase()
方法,该方法依次调用
getDatabaseLocked()
,该方法在内部调用
db.rebooreadwrite()

public SQLiteDatabase getReadableDatabase(){
已同步(此){
返回getDatabaseLocked(false);
}
}
私有SQLiteDatabase getDatabaseLocked(布尔可写){
if(mDatabase!=null){
如果(!mDatabase.isOpen()){
//该死!用户通过调用mDatabase.close()关闭了数据库。
mDatabase=null;
}如果(!writable | | |!mDatabase.isReadOnly(){
//该数据库已对业务开放。
返回mDatabase;
}
}
如果(错误初始化){
抛出新的IllegalStateException(“递归调用getDatabase”);
}
SQLiteDatabase=mDatabase;
试一试{
错误初始化=正确;
如果(db!=null){
if(可写&&db.isReadOnly()){
db.readwrite();
}
//.......................

请分享您的代码。谢谢您的帮助!!