当前位置: 首页 > 知识库问答 >
问题:

如果没有ROOT,如何从Android应用程序下载sqlite数据库?[副本]

齐冥夜
2023-03-14

我试图下载我的sqlite数据库,以便我可以查看它的内容(我们的应用程序在线离线同步,我试图确保它只是从API中拉下来它应该做的)。

我试图使用adb拉 /data/data/com.mycompany.myapp/files/db.sqlite3,但我一直被拒绝权限。

我曾尝试通过shell登录并将其复制到SD卡,但我在那里也被拒绝了权限(我不想在清单中添加SD卡访问)。

$ adb shell
$ run-as com.mycompany.myapp
$ cd files
$ cp db.sqlite3 /mnt/sdcard/db.sqlite3
$ PERMISSION DENIED

在没有ROOT权限的情况下,如何将sqlite文件从android设备下载到允许我访问的位置?

共有1个答案

裴英锐
2023-03-14

下载(如您所见)相当棘手,但并非不可能。

以下是获取文件并将其移动到本地计算机的步骤
注意:我在Windows上,但这可以在其他设备上完成,只要您知道本地路径。

$ adb shell                         // enter into shell
$ run-as [com.mycompany.myapp]      // log in as your app
$ cd [files]                        // navigate to the path of the file you need access to.
$ chmod 0644 [db.sqlite3]           // DANGEROUS: change the permissions of said file allow you access via adb pull
$ {ctrc} + {c}                      // Exit Shell
$ adb pull [/data/data/com.mycompany.myapp/files/db.sqlite3] [c:\db.sqlite3] // pull the file to your local machine.

从那里,您可以导航到输出目录并访问该文件。

注意:[方括号]中的任何内容都是一个变量,您将用自己的变量填充它
注意:{ctrl}{c}位于Windows上的PowerShell中,其他平台可能不同。

我还创建了一个简单的Powershell脚本,可以自动执行此操作。

$appName = 'com.mycompany.myapp'
$dbName  = 'db'

adb shell "run-as $appName chmod 644 /data/data/$appName/files/$dbName"
adb pull "/data/data/$appName/files/$dbName" "./$dbName.sqlite3"
Invoke-Item ".\$dbName.sqlite3"
 类似资料:
  • 我遵循了答案中给出的分步说明,即如何在Android设备上查看SQLite数据库? 1) 连接设备并以调试模式启动应用程序。 2) 将数据库文件从应用程序文件夹复制到sd卡。您可能需要使用adb-dshell“以com.resmed.mon ls/data/data/com.resmed.mon/databases/”来查看数据库文件名。 3)adb-d shell"run-ascom.yourp

  • 我正在开发一个使用SQLite DB的WPF桌面应用程序,它位于我的App_data文件夹中,在调试中运行它是可以的,但是当我构建应用程序并在另一台计算机上运行它时,如何包含DB文件呢?我是否需要为我的应用程序构建安装程序,以便在具有读/写访问权限的用户计算机上的某个位置创建DB的副本? 谢谢

  • 我想捕捉一个在我的手机上运行的Android应用程序的屏幕截图。 我尝试使用屏幕截图UX应用程序。这也可以在无根电话上完成。你知道如何从后台运行的服务中获取Android应用程序的屏幕截图吗? 我希望我的服务定期捕捉屏幕,并发送到服务器。

  • 问题内容: 我已经创建了一个SQLite数据库。我想将此数据库文件用于我的Android项目。我想将此数据库与我的应用程序捆绑在一起。 应用程序如何创建该数据库的访问权限并将其用作数据库,而不是创建新数据库? 问题答案: 注意: 在尝试此代码之前,请在以下代码中找到此行: 此处是你的数据库的名称。假设你在文件夹中有数据库的副本,因此,例如,如果你的数据库名称为,则的值为, 将数据库保留在资产文件夹

  • 我在SQLite数据库中有一组数据。我需要查看设备上的数据库。我该怎么做? 我已经在ddms模式下进行了检查。文件资源管理器中的数据为空。

  • 也就是说,我想创建应用程序,然后让这些应用程序访问一个项目的特定Firebase数据库。 查看Firebase Android文档,我找不到一种方法来使用下面的方法将数据发送到另一个项目中的另一个Firebase数据库,但其中的引用是另一个项目的。