我正在嘗試將備份和還原應用數據庫的功能合併到Google Drive應用文件夾(對用戶不可見)。我仔細閱讀了針對android給出的基本設置指南setup guide,並且可以讓用戶授權應用程序並達到調用onConnected方法的地步。將SQLlite數據庫備份/還原到Google Drive應用文件夾
我面對的問題是,我不知道如何去'發送'數據庫文件(.db)從設備到谷歌驅動器的應用程序文件夾。谷歌已經分享了創建一個新文件的代碼片段,但這就是它。我確實發現了一個先前提出的問題,與我正在尋找Google drive to back up and restore database and shared preferences of Android application的模式相似,但後來又不是我正在尋找的問題。
搜索谷歌沒有返回任何有用的鏈接,可能是因爲這是相對較新的api。
UPDATE 1:
共享onConnected()的代碼,
public void onConnected(Bundle bundle) {
Toast.makeText(GoogleSignIn.this, "In onConnected activity", Toast.LENGTH_SHORT).show();
// Testing to see if database is indeed uploaded to google drive app folder
String db_name = "XXX_DB";
String currentDBPath = "/data/" + "com.abc.efg" + "/databases/" + db_name;
saveToDrive(
Drive.DriveApi.getAppFolder(mGoogleApiClientDrive),
"XXX_DB.db",
"application/x-sqlite3",
new java.io.File(currentDBPath)
);
}
更新2:
以下共有的溶液完全適用於上載數據庫,以谷歌驅動的應用程序的文件夾。對於那些可能面臨類似問題的人,嘗試將數據庫路徑更改爲"/data/data/com.abc.efg/databases/" + db_name
而不是"/data/com.abc.efg/databases/" + db_name
下一步是能夠從谷歌驅動器應用程序文件夾中檢索和恢復數據庫。如果我能夠得到它的工作,請更新這個問題。
欣賞代碼。至少現在我知道在哪個方向思考。試圖執行它,但我得到一個文件/文件夾未找到錯誤。使用onConnected方法代碼更新了問題。有趣的是,這與我用於在設備存儲中備份(和還原)數據庫的路徑相同,並且它沒有任何問題! – Paritosh
這可能聽起來很天真,但路徑起作用,您的代碼使用「/ data/data /」代替「/ data /」!現在試圖扭轉過程,並從應用程序文件夾中獲取數據庫... – Paritosh
我放在那裏的路徑(\ ... \ ... \)是象徵性的我不知道你的數據庫文件在哪裏,也不知道它的名字是什麼。該代碼僅處理將文件上傳到雲端硬盤。如果您需要將其下載回來,請使用上面獲得的DriveId並將其應用到'read()'方法[here](https://github.com/seanpjanson/GDAADemo/blob/master/app/src /main/java/com/spjanson/gdaademo/GDAA.java)。 – seanpj