我正在开发一个应用程序,我知道我的数据库*.db将出现在data/data/com.****.***

我可以在sqlite管理器的帮助下从Eclipse中的AVD访问这个文件

但是我的安卓手机无法访问这个文件。 我谷歌了一下,它说我需要在我的手机上查找,但我不想这样做。

我如何访问我的data/data/.....目录在我的安卓手机“没有根它”?

是否可以更改目录data/data.....的用户权限没有生根?


当前回答

在未根的Android 5.0+设备上从可调试应用程序文件夹(例如/data/data/package.name/databases/file)中提取文件最简单的方法(只是一个简单的步骤)是使用以下命令:

adb exec-out run-as package.name cat databases/file > file

其他回答

我也曾经遇到过同样的问题。除了adb shell或根设备,没有办法在android设备中直接访问文件。

下面是02种替代方案:

1)

 public void exportDatabse(String databaseName)
   {
     try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
            String backupDBPath = "backupname.db";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {

    }
}

2)试试这个:https://github.com/sanathp/DatabaseManager_For_Android

直接在手机上访问这些文件很困难,但你可以将它们复制到你的电脑上,在那里你可以做任何你想做的事情。 没有根你有两个选择:

If the application is debuggable you can use the run-as command in adb shell adb shell run-as com.your.packagename cp /data/data/com.your.packagename/ Alternatively you can use Android's backup function. adb backup -noapk com.your.packagename You will now be prompted to 'unlock your device and confirm the backup operation'. It's best NOT to provide a password, otherwise it becomes more difficult to read the data. Just click on 'backup my data'. The resulting 'backup.ab' file on your computer contains all application data in android backup format. Basically it's a compressed tar file. This page explains how you can use OpenSSL's zlib command to uncompress it. You can use the adb restore backup.db command to restore the backup.

如果你使用的是Android Studio 3.0或更高版本,请遵循以下步骤。

单击“查看>工具Windows >设备文件资源管理器”。 展开/data/data/[package-name]节点。

只能展开在非根设备上以调试模式运行的包。

在根设备上,正确的解决方案是:

Open cmd
Change your directory and go into 'Platform tools'
Type 'adb shell'
su
Press 'Allow' on device
chmod 777 /data /data/data /data/data/*
Open DDMS view in Eclipse/IntelliJ and from there open 'FileExplorer' to get your desired file

原来的解决方案是可行的,但是chmod将返回未知的目录。将chmod命令更改为/data/data/*可以从Intellij中的DDMS访问data目录中的所有子文件夹。我假设同样的解决方案也适用于Eclipse DDMS。

更新 我的发现很奇怪。我正在IntelliJ (Android设备监视器)中使用DDMS运行Nexus 6。我已经构建了一个小入门应用程序。该应用程序将数据保存到data/data/com.example.myapp/files中的.csv文件

When I first started to try to access this file on my Nexus 6, I found that I have to root the device.. I could see the data folder, but trying to open it would not work. As mentioned online in other places, the expand + would vanish then reappear shortly thereafter (note, there are solutions on the web that claim to allow access to these folders without rooting, I didn't find them till too late, and I'm not sure if I prefer not to root anyway ((I'd rather be able to do it manually than rely on an app or command prompt to give me my solutions))). I rooted my 6 and tried DDMS again.

在这一点上,它显示了数据文件夹,我可以展开文件夹,看到com。目录,但我无法打开任何一个。就在那时,我发现了上面的解决方案。最初的说明对这部分不起作用:

chmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/*

就在那时,我尝试了我发布的解决方案:

chmod 777 /data /data/data /data/data/*

这个解决方案似乎是可行的,但只适用于某些文件夹。我现在可以展开myapp文件夹,但不能展开其中的文件目录。

在这一点上,我尝试了一段时间,然后想到为什么不直接在我需要的目录上尝试它,而不是尝试这些通配符条目。

chmod 777 /data /data/data /data/data/com.example.myapp/*

紧随其后的是:

chmod 777 /data /data/data /data/data/com.example.myapp/files

这些命令允许我展开并查看应用程序目录中的文件,以确认.csv文件被正确保存。

希望这能帮助到一些人。我为此挣扎了好几个小时!

(更奇怪的是,权限并没有传递给文件目录的.csv文件。我的文件目录权限读DRWXRWXRWX和我的log.csv文件权限读-rw-rw---- ..仅供参考)

你可以像这样下载一个文件:

Adb执行run-as debug .app.package.name cat files/file.mp4 > file.mp4

在你下载之前,你可能不想看看你的App-Directory中的文件结构。要做到这一点,请按照上面THelper提到的步骤:

adb shell
run-as com.your.packagename 
cd files
ls -als .

Shahidul提到的Android-Studio方式(https://stackoverflow.com/a/44089388/1256697)也可以。对于那些在菜单中没有看到DeviceFile资源管理器选项的人:请确保在Android Studio中打开/ Android - directory。 例如,react-native用户在他们的Project-Folder中有这个和/ios-Directory在同一级别。