2016-04-01 11 views
1

Ben veri klasörüne erişmeye çalıştığımda android cihaz monitöründe fark ettim, böylece fiziksel telefonumda çalışmakta olan uygulamanın bir sql dosyasını çalıştırabilirim ancak bir emülatör aracılığıyla uygulamaya erişirken işe yarıyor . Uygulamanın emülatör üzerinde çalıştırılması çok daha fazla zaman alıyor ve bu sqlite verilerini zamanlanmış bir vivada sunmam gerekiyor, bu yüzden bir emülatörü gerçekten bekleyemiyorum.Aygıt monitöründe fiziksel dosyadan SQL dosyası alınıyor değil mi?

Hata ayıklamaya izin verdiğim için bunun neden gerçekleştiğini merak ettim ve daha fazla güvenlik denetimi istemediğinde aygıt izleyicisi veri klasörünü açmayacak, tıklatıldığında klasörün yanındaki ok işareti kaybolduğunda yeniden görünecek Birkaç saniye sonra, diğer her klasöre yanında açılan bir okla erişmeye devam edebilirim.

cevap

0

Cihazınız rootlu değilse, uygulamanızın veri dosyasına erişemezsiniz. Dosyayı sdcard dosyasına kopyalamak için aşağıdaki kod snippet'ini Activity'unuzdan herhangi birinde kullanmayı deneyin.

public static void copyDataFile() { 
    File dataDir = getFilesDir().getParentFile(); 
    File target = new File(dataDir, "/* relative path to your sql file */"); 
    File out = new File(Environment.getExternalStorageDirectory(), "/* new file name */"); 
    copyFile(target, out); 
} 

public static void copyFile(File in, File out) { 
    if (in.exists()) { 
     if (!out.exists()) { 
      try { 
       out.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     FileInputStream is = null; 
     FileOutputStream os = null; 
     try { 
      is = new FileInputStream(in); 
      os = new FileOutputStream(out); 
      byte[] buf = new byte[4096]; 
      int l = 0; 
      while ((l = is.read(buf)) > 0) { 
       os.write(buf, 0, l); 
      } 
      os.flush(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (is != null) { 
        is.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      try { 
       if (os != null) { 
        os.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
İlgili konular