База данных создается для эмулятора, но не для устройства Android.

Я делаю приложение для Android, в котором база данных создается с помощью sqlite open helper. когда я установил свое приложение в эмуляторе, оно работает нормально, но когда я сделал то же самое для тестирования на своем телефоне, я не вижу никакой базы данных, созданной в представлении данных / данных проводника файлов DDMS. Выходит пусто. Пожалуйста, помогите мне с этим.

Спасибо.


person Riddhi Dudani    schedule 14.02.2015    source источник
comment
Просто проверьте, можете ли вы запросить или базу данных. Вставьте, а затем извлеките что-нибудь, чтобы быть уверенным. DDMS может ошибаться.   -  person Saeed Entezari    schedule 14.02.2015
comment
stackoverflow.com/questions/18471780 /   -  person CommonsWare    schedule 14.02.2015


Ответы (2)


Получите root-права на устройстве Android

or

написать код для копирования файла db на SD-карту

Код для копирования базы данных из каталога /data/data на SD-карту

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);
    }


}
person Joby Wilson Mathews    schedule 14.02.2015
comment
Спасибо за вашу помощь @Joby. Да это была причина. - person Riddhi Dudani; 19.02.2015

Вы можете видеть в DDMS частные файлы приложения (из каталога data/data) на эмуляторе, но это невозможно увидеть в устройство без рута. Но это не значит, что базы данных не существует. Если вы хотите получить базу данных с реального устройства, вам нужно получить root-права или написать код в своем приложении, который копирует файл базы данных на SD-карту.

person Konrad Krakowiak    schedule 14.02.2015
comment
Спасибо. Это может быть причиной. Но недавно я обновил свой телефон до Lollipop. До этого я мог видеть базу данных после извлечения из моего устройства в моей системе. Раньше тоже не рутировался. Вредит ли рутирование моему устройству? Тогда я хотел бы попробовать. - person Riddhi Dudani; 15.02.2015
comment
Это зависит от устройства. Вы можете потерять гарантию. И если у вас есть устройство Samsung с KNOX, вы сожжете бит. В основном рутирование устройства не является хорошей практикой. Если вам не нужно, не делайте этого. - person Konrad Krakowiak; 15.02.2015
comment
Спасибо Конрад, ваша помощь очень ценится. - person Riddhi Dudani; 16.02.2015
comment
Итак, вы можете принять мое решение? Если это поможет вам, конечно. - person Konrad Krakowiak; 16.02.2015
comment
Да, база создана. Я вернул метод getCount() из курсора, который каждый раз обновляется. Это означает, что мой код работает отлично. Большое спасибо за вашу помощь @KonradKrakowiak. - person Riddhi Dudani; 19.02.2015
comment
@RiddhiWala Вы пробовали мое решение? Если это было полезно для вас, пожалуйста, примите это :) - person Konrad Krakowiak; 17.03.2015