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

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

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

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

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


当前回答

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

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在同一级别。

其他回答

从Android备份到Desktop

打开命令行cmd并运行以下命令: adb backup -f C:\Intel\xxx。Ab -noapk你的。app.package。 不输入密码,点击备份我的数据。 确保不要保存在C根盘上。你可能会被拒绝。 这就是为什么我保存C:\英特尔。

来提取*。ab文件

点击这里下载:https://sourceforge.net/projects/adbextractor/ 解压缩下载的文件,并导航到解压缩的文件夹。 使用自己的文件名运行:java -jar abe.jar unpack c:\Intel\xxx英特尔ab c: \ \ xxx.tar

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

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.

其中一个简单的方法是在sd卡上创建数据库。因为你无法访问手机内存中的数据文件夹,除非你对手机进行root操作。那么为什么不简单地在sd卡上创建数据库呢?

此外,如果您愿意,可以编写一些文件复制代码,将现有的数据库文件(从内部内存)复制到外部内存,而不需要任何根。

您还可以尝试将文件复制到SD卡文件夹,这是一个公共文件夹,然后您可以将文件复制到您的PC上,在那里您可以使用sqlite访问它。

下面是一些你可以用来将文件从data/data复制到公共存储文件夹的代码:

private void copyFile(final Context context) {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath =
                    context.getDatabasePath(DATABASE_NAME).getAbsolutePath();

            String backupDBPath = "data.db";

            File currentDB = new File(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) {
        e.printStackTrace();
    }
}

清单:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />

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

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在同一级别。