我正在开发一个应用程序,我知道我的数据库*.db将出现在data/data/com.****.***
我可以在sqlite管理器的帮助下从Eclipse中的AVD访问这个文件
但是我的安卓手机无法访问这个文件。 我谷歌了一下,它说我需要在我的手机上查找,但我不想这样做。
我如何访问我的data/data/.....目录在我的安卓手机“没有根它”?
是否可以更改目录data/data.....的用户权限没有生根?
我正在开发一个应用程序,我知道我的数据库*.db将出现在data/data/com.****.***
我可以在sqlite管理器的帮助下从Eclipse中的AVD访问这个文件
但是我的安卓手机无法访问这个文件。 我谷歌了一下,它说我需要在我的手机上查找,但我不想这样做。
我如何访问我的data/data/.....目录在我的安卓手机“没有根它”?
是否可以更改目录data/data.....的用户权限没有生根?
当前回答
使用eclipse中的文件资源管理器。Select Windows => Show View => Other…>文件资源管理器。
另一种方法是通过adb提取文件:
adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
其他回答
直接在手机上访问这些文件很困难,但你可以将它们复制到你的电脑上,在那里你可以做任何你想做的事情。 没有根你有两个选择:
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.
我也曾经遇到过同样的问题。除了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
adb backup didn't work for me, so here's what I did (Xiaomi Redmi Note 4X, Android 6.0): 1. Go to Settings > Additional Settings > Backup & reset > Local backups. 2. Tap 'Back up' on the bottom of the screen. 3. Uncheck 'System' and 'Apps' checkmarks. 4. Tap detail disclosure button on the right of the 'Apps' cell to navigate to app selection screen. 5. Select the desired app and tap OK. 6. After the backup was completed, the actual file need to be located somehow. Mine could be found at /MIUI/backup/AllBackup/_FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_. 7. Then I followed the steps from this answer by RonTLV to actually convert the backup file (.bak in my case) to tar (duplicating from the original answer): " a) Go here and download: https://sourceforge.net/projects/adbextractor/ b) Extract the downloaded file and navigate to folder where you extracted. c) run this with your own file names: java -jar abe.jar unpack c:\Intel\xxx.ab c:\Intel\xxx.tar "
使用eclipse中的文件资源管理器。Select Windows => Show View => Other…>文件资源管理器。
另一种方法是通过adb提取文件:
adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
SQLlite数据库存储在用户的手机,它隐藏在路径下:
/Data/Data/com.companyname.AppName/File/
你有两个选择:
你可以根你的手机,这样你就可以查看你的隐藏 db4文件 这不是解决方案,而是一种变通办法。为什么不直接创建测试呢 使用“select”语句在其中显示数据库表的页面。