2017-08-16 89 views
0

我想要獲取我在Android Studio項目中創建的數據庫的路徑。當我硬編碼路徑時它工作正常,但我無法獲得其他路徑。 實際路徑是:如何在Android中獲取文件的實際路徑?

/data/data/package.name/databases/database.db

但功能類似getPath()getDatabasePath()返回:

數據/用戶/ 0/package.name/databases/database.db

我得到:

W /系統:類加載器引用未知路徑:

消息。 我想這就是Uri的位置?我如何檢索實際路徑?

回答

0

您是否將它傳遞給上下文?該代碼應該看起來像

String path = context.getDatabasePath(DATABASE_NAME).getPath(); 

其中database_name是數據庫的名稱,你的背景應該是你定義的上下文。

+0

是的,這是我的確切代碼。 file = context.getDatabasePath(「database.db」); String outFileName = file.getAbsolutePath(); – persiaprince

0

但像的getPath()和getDatabasePath功能()返回的數據/用戶/ 0/package.name /數據庫/ database.db

它返回什麼是正確的答案,但你錯過了領先的斜線。

實際路徑是/data/data/package.name/databases/database.db

僅在某些操作系統版本,有時只能從應用程序本身之外。 Android支持設備的多個用戶;您的應用將看到的路徑取決於用戶。

,我也得到:W /系統:ClassLoader的引用未知的路徑:

這是一個隨機警告,無關與此代碼。

如何檢索實際路徑?

由於這似乎是數據庫的路徑,請使用getDatabasePath()

+0

我不認爲我錯過了主要的斜線。我正在打印控制檯的路徑,但沒有包含它。它在我對/ data/data路徑進行硬編碼時有效,但對數據/用戶無效。 – persiaprince

+0

@persiaprince:你可能想編輯你的問題,並提供一個[mcve]展示你正在用這條路徑做什麼,並解釋「有效」的含義。 – CommonsWare

+0

對不起,原來斜線在那裏。 「工作」僅僅意味着我可以訪問數據庫文件。 – persiaprince

相關問題