2015-10-05 3 views
0

Как я могу извлечь файл базы данных из DDMS, когда устройство подключено? Я знаю, как тянуть во время работы в эмуляторе Android. Но я хочу потянуть его, когда устройство подключено? Помогите решить эту проблему.как вытащить базу данных из ddms при подключении устройства

+0

Возможный дубликат [Как просмотреть базу данных SQLite в устройстве андроида] (http://stackoverflow.com/questions/19194576/how-to -view-the-sqlite-database-in-device-android) – Skynet

+0

Для этого вам понадобится root-доступ на устройстве. ваше устройство укоренено? –

ответ

0

Я думаю, что понимаю ваши вопросы, вы спрашиваете, что путь для захвата базы данных с устройства Android.

Мы не можем получить базу данных некоторых устройств, поэтому я думаю, что возможным решением является создание кнопки резервного копирования в вашем проекте для копирования базы данных из личных папок приложения и вставки ее на SD-карту. то вы можете получить доступ к базе данных с помощью SQL-браузера.

Вот код для копирования базы данных:

// method to get backup 
    public void BackupDatabase() throws IOException 
    { 
     try { 
       File sd = new File(Environment.getExternalStorageDirectory()+"");//getBaseContext().getFilesDir(); 
       File data = Environment.getDataDirectory(); 

       if(sd == null || !sd.canWrite()){ 
        sd = getBaseContext().getFilesDir(); 
       } 
      if (sd.canWrite()) 
      { 
       String currentDBPath = "/data/your.package.name/databases/YourDatabaseName"; 
       File temp = new File(sd, "BackupFolderInSDCard"); 
       if(!temp.exists()) 
        temp.mkdirs(); 

       File backupDB = new File(temp,"backup.db"); 
       File currentDB = new File(data, currentDBPath); 

       if (currentDB.exists()) 
       { 
        FileInputStream fis = new FileInputStream(currentDB); 
        BufferedInputStream bis = new BufferedInputStream(fis,1024); 

        FileOutputStream fos = new FileOutputStream(backupDB); 
        BufferedOutputStream bos = new BufferedOutputStream(fos, 1024); 

        byte arr[] = new byte[1024]; 
        int ch; 
        while((ch = bis.read(arr)) != -1) 
        { 
         bos.write(arr, 0, ch); 
        } 

        bos.close(); fos.close(); 
        bis.close(); fis.close(); 
//     Toast.makeText(getBaseContext(), "File Saved To\n"+ backupDB.getAbsolutePath(), Toast.LENGTH_LONG).show(); 
        Toast.makeText(getBaseContext(), "Database Stored in SD Card", Toast.LENGTH_LONG).show(); 
       } 
       else 
       { 
        Toast.makeText(getBaseContext(), "Database Doesn't Exist"+ backupDB.getAbsolutePath(), Toast.LENGTH_LONG).show(); 
       } 
Смежные вопросы