机器人工作室。在 PC 上,从数据库读取成功,在 Android 上数据库为空。我将数据库本身存储在 assets 目录中,与所有图片所在的位置相同。所有在android中没有问题的图片都是用的
dbHandler = DatabaseHandlerFactory.getNewDatabaseHandler(DATABASE_NAME, DATABASE_VERSION, DATABASE_CREATE, null);
dbHandler.setupDatabase();
dbHandler.openOrCreateDatabase();
dbHandler 在手机中找不到 .db 文件并创建新的空数据库,我如何将数据库传输到 android 以便我可以读取它?
AndroidLauncher 代码基于 Chaynik 的回答(有效)
import android.content.Context;
import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class AndroidLauncher extends AndroidApplication {
Context mycontext;
private static String DB_NAME = "database.db";
private String DB_PATH;
private void copydatabase() throws IOException {
//Open your local db as the input stream
InputStream myinput = mycontext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outfilename = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myoutput = new FileOutputStream(mycontext.getDatabasePath(DB_NAME));
// transfer byte to inputfile to outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myinput.read(buffer))>0) {
myoutput.write(buffer,0,length);
}
//Close the streams
myoutput.flush();
myoutput.close();
myinput.close();
}
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
mycontext = getContext();
DB_PATH = getApplicationContext().getPackageName()+"/databases/";
try {
copydatabase();
} catch(IOException e) {};
initialize(new ReactionTeacher(1), config);
}
}
您将无法使用应用程序资源目录中的数据库 - 您首先需要将其复制到存储卡上的应用程序目录中。算法很简单。
这是从enSO上的类似问题中获取的代码