I want to read (only) records from data/data/com.android.providers.telephony/databases/mmssms.db (I know no official API, etc. but since it lacks an official API I have to do it). I thought I can do it like written How to access an existing sqlite database in Android? in the last answer, just by
SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.android.providers.telephony/databases/mmssms.db ", null, 0);
but the system is not able to open that DB file. Next I thought I might have to create a full blown DB Helper class
package com.test.dbaccess;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbAdapterMms
{
private final Context ctx;
private DatabaseHelper dbHelper;
public SQLiteDatabase db;
private static class DatabaseHelper extends SQLiteOpenHelper
{
private final Context ctx;
DatabaseHelper(Context context)
{
super(context, "data/data/com.android.providers.telephony/databases/mmssms.db", null, 1);
this.ctx = context;
}
@Override
public void onCreate(SQLiteDatabase db)
{
//do nothing, this should exist
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
//do nothing, reading only
}
}
public DbAdapterMms(Context context)
{
this.ctx = context;
}
public void open()
{
dbHelper = new DatabaseHelper(ctx);
db = dbHelper.getReadableDatabase();
}
public void close()
{
dbHelper.close();
}
}
It still doesn't work, this time I think it might be an issue in the call super(); since there the DBVersion has to be given. The version I don't know, I just want to read the existing db. Can't be rocket sience...
Any help? Thanks, A.