2017-08-16 125 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

相关问题