我一直在研究我的项目,我目前正在使用模拟器来访问我创建的数据库。但是,我想知道是否有人知道在DDMS eclipse中访问真实设备上的DB的方法?
我知道在模拟器上访问数据库只是打开data / data / package_name / database ...我无法真正找到一种方法来检查我的真实设备上的数据库。 (这是Android设备中的一些安全问题)我想使用它的原因有时候,模拟器不支持GPS信号。有谁知道我可以下载任何第三方lib /插件吗?非常感谢你。
答案 0 :(得分:1)
我认为这对你有用 **我是SdCard中的复制数据库,然后访问**。
这是我的数据库助手类
public class OpenDatabaseHelper extends SQLiteOpenHelper {
static final String DATABASE_NAME = "MyDB";
.
.
.
public OpenDatabaseHelper(Context context) {
// super(context, name, factory, version);
super(context, Environment.getExternalStorageDirectory()
+ File.separator + "/DataBase/" + File.separator
+ DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
.
.
.
}
在Activity类中创建对象
OpenDatabaseHelper db = new OpenDatabaseHelper(YourActivity.this);
调用任何数据库方法
db.DataBasemethod();
然后输入此代码
try {
String destPath = Environment.getExternalStorageDirectory().toString();
File f = new File(destPath);
if (!f.exists()) {
f.mkdirs();
f.createNewFile();
// ---copy the db from the /data/data/ folder into
// the sdcard databases folder--- here MyDB is database name
CopyDB(new FileInputStream("/data/data/" + getPackageName()+ "/databases"), new FileOutputStream(destPath+ "/MyDB"));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
public void CopyDB(InputStream inputStream, OutputStream outputStream)
throws IOException {
// ---copy 1K bytes at a time---
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}