数据库是为模拟器创建的,而不是为 android 设备创建的

Database is created for emulator but not for android device

我正在制作一个 android 应用程序,其中的数据库是使用 sqlite open helper 创建的。当我在模拟器中安装我的应用程序时它工作正常但是当我在我的 phone 中做同样的事情进行测试时,我没有看到在 DDMS 文件资源管理器视图 data/data 中创建任何数据库。它出来是空的。这个你能帮我吗。

谢谢。

您可以在模拟器上看到 DDMS 应用程序的私有文件(来自 data/data 目录) 但在没有 root 的 设备中是看不到的。但这并不意味着数据库不存在。如果你想从真实设备上获取数据库,你必须root它或者在你的应用程序中编写一些代码来复制SD卡上的数据库文件。

root android 设备

写一个复制db文件到sdcard的代码

从/data/data目录复制数据库到sdcard

的代码
public void copyDBToSDCard() {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//"+getPackageName()+"//databases//"+DB_NAME+"";
            String backupDBPath = "backupname.db";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }

        }
        Toast.makeText(print.this, 
                   "Database Saved", Toast.LENGTH_LONG).show();
    }  catch (Exception e) {
        Toast.makeText(print.this, 
                   "Error="+e, Toast.LENGTH_LONG).show();
        Log.i("FO","exception="+e);
    }


}