I want to see the contents of my database created in my app in the device I deploied it. I can use sqlite commands in shell and see in emulator but not in a real device.
Can anyone know how to do it in real device?
I want to see the contents of my database created in my app in the device I deploied it. I can use sqlite commands in shell and see in emulator but not in a real device.
Can anyone know how to do it in real device?
root is not necessary if the application is flagged a debuggable. You can use the run-as
adb command.
e.g. to use sqlite :
adb shell "run-as com.your.package sqlite3 databases/database_name"
or copy and pull the database :
adb shell "run-as com.your.package cat databases/database_name > /sdcard/some_name"
adb pull /sdcard/some_name
unfortunately it seems that pre-ICS run-as
has quite a few bugs, e.g. issue 20792 or 13965
Actually your Real Device is not Rooted so you don't have a permission to access /data/data/<Application>/database/
directory.
Only one solution copy that file to external Storage .. And see it in SQLiteManager or any other SQLite tools.
Try this,
You can copy your database in to your sdcard where you can see your database
public void backup() {
try {
File sdcard = Environment.getExternalStorageDirectory();
File outputFile = new File(sdcard,
"YourDatabase.db");
if (!outputFile.exists())
outputFile.createNewFile();
File data = Environment.getDataDirectory();
File inputFile = new File(data,
"data/"+getPackageName()+"/databases/"+"YourDatabase.db");
InputStream input = new FileInputStream(inputFile);
OutputStream output = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
throw new Error("Copying Failed");
}
}
Hope it helps.
Try this function as
copyFile(new File("data/data/<app>/database"),new File("mnt/sdcard/...."))
.
public void copyFile(File filesrc, File filedst)
{
try
{
FileInputStream localFileInputStream = new FileInputStream(filesrc);
FileOutputStream localFileOutputStream = new FileOutputStream(filedst);
byte[] arrayOfByte = new byte[1024];
while (true)
{
int i = localFileInputStream.read(arrayOfByte);
if (i == -1)
{
localFileOutputStream.close();
localFileInputStream.close();
break;
}
localFileOutputStream.write(arrayOfByte, 0, i);
}
}
catch (Exception localException)
{
Log.d("XXX", "ExceptioncopyFile:" + localException.getMessage(), localException);
}
}