Добрый. В этой ветке было обсуждение о том, как использовать БД без доступа к папке data/data . Нашел статью
Получить путь к SD карты памяти
public static final String DATABASE_FILE_PATH = "/sdcard";
или
Environment.getExternalStorageDirectory()
Далее создаем через корневой путь, доступ к базе данных
public class DatabaseHelper
{
private static final String TAG = "DatabaseHelper";
public static final String DATABASE_FILE_PATH = Environment.getExternalStorageDirectory();
public static final String DATABASE_NAME = "mydb";
public static final String TRACKS_TABLE = "tracks";
public static final String TRACK_INFO_TABLE = "track_info";
private static final String TRACKS_TABLE_CREATE = "create table "
+ TRACKS_TABLE
+ " (_id integer primary key autoincrement, title text not null, description text null, created_at date not null);";
private static final String TRACK_INFO_TABLE_CREATE = "create table "
+ TRACK_INFO_TABLE
+ " (_id integer primary key autoincrement, track_id integer not null, latitude real not null, longitude real not null, altitude real not null, created_at date not null);";
private SQLiteDatabase database;
public DatabaseHelper()
{
try
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,SQLiteDatabase.OPEN_READWRITE);
}
catch (SQLiteException ex)
{
Log.e(TAG, "error -- " + ex.getMessage(), ex);
// error means tables does not exits
createTables();
}
finally
{
DBUtil.safeCloseDataBase(database);
}
}
private void createTables()
{
database.execSQL(TRACKS_TABLE_CREATE);
database.execSQL(TRACK_INFO_TABLE_CREATE);
}
public void close()
{
DBUtil.safeCloseDataBase(database);
}
public SQLiteDatabase getReadableDatabase()
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READONLY);
return database;
}
public SQLiteDatabase getWritableDatabase()
{
database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH
+ File.separator + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READWRITE);
return database;
}
Добавляем строку в файле manifest
android.permission.WRITE_EXTERNAL_STORAGE
Ссылка на статью
http://stackoverflow.com/questions/7229 ... lper-creat… se-on-sd-card
Все работает кроме одного (и самого главного)
android.database.sqlite.SQLiteException: attempt to write a readonly database
Подскажите пожалуйста, в чем дело?
Заранее спасибо.