2013-10-21 47 views
1

我有一些代碼來轉儲數據庫sqlite3然後讀入一個字符串:運行SQLite3數據庫轉儲需要哪個Android權限?

String dbPath = "/data/data/com.company.project/databases/project.db"; 
    String outputPath = "/data/data/com.company.project/databaseDump.txt"; 

    Process proc = Runtime.getRuntime().exec("sqlite3 " + dbPath + " '.dump' > " + outputPath); 
    proc.waitFor(); 
    returnString = FileUtil.getStringFromFile(outputPath); 

當我在我的模擬器我很好,但是當我真正的手機上運行它,它不工作運行。我很好奇,如果我需要添加額外的權限到清單,或我失蹤。

EDT

因此,似乎我的問題的一部分是PEBKAC ......我手動運行轉儲通過亞行後,該文件的讀取在模擬器中運行良好。所以dump命令看起來不像它的工作模擬器要麼...我需要做一個意圖的sqlite3程序?如果是這樣,我該如何做一個特定的程序?

回答

0

它看起來像SQLite3是一個命令,你可以從adb運行,但它不一定在手機上。基於此,我採取了不同的方法。我使用了android的DatabaseUtils來幫助我創建我需要的結果,例如DatabaseUtils.dumpCursorToString(cursor)。我對每個我感興趣的表都做了這個,並構建了一個返回字符串。

+1

這從根本上是錯誤的。從adb *運行的任何東西都是*在手機上運行。授予它在adb的userid而不是應用程序運行,但前提是源和目標文件由應用程序userid擁有,試圖執行操作(或全局訪問),這應該不成問題。也就是說,啓動一個進程並不是在Android應用程序中執行任務的首選方式。 –

相關問題