Nav*_*e P 293 android adb android-emulator android-sqlite
我正在开发一个应用程序,我知道我的数据库 *.db
将出现在data/data/com.****.***
我可以借助sqlite manager从Eclipse中的AVD访问此文件
但我无法在Android手机中访问此文件.
我谷歌它,它说我需要根我的手机来做它,但我不想这样做.(新手机,保修问题和安全问题)
所以这是我的问题:如何data/data/.....
在没有生根的情况下访问Android手机中的目录 "?
我可以在data/data.....
不生根的情况下更改目录的用户权限吗?
THe*_*per 353
直接在手机上访问文件很困难,但您可以将它们复制到计算机上,在计算机上可以随意执行任何操作.没有root,你有2个选择:
如果应用程序是可调试的,您可以run-as
在adb shell中使用该命令
adb shell
run-as com.your.packagename
cp /data/data/com.your.packagename/
Run Code Online (Sandbox Code Playgroud)或者,您可以使用Android的备份功能.
adb backup -noapk com.your.packagename
Run Code Online (Sandbox Code Playgroud)
现在将提示您"解锁设备并确认备份操作".最好不要提供密码,否则读取数据会变得更加困难.只需点击"备份我的数据"即可.您计算机上生成的"backup.ab"文件包含android备份格式的所有应用程序数据.基本上它是一个压缩的tar文件.本页介绍了如何使用OpenSSL的zlib命令解压缩它.您可以使用该 adb restore backup.db
命令恢复备份.
Sha*_*dul 108
如果您使用的是Android Studio 3.0或更高版本,请按照以下步骤操作.
您只能展开在非root设备上以调试模式运行的程序包.
She*_*lji 59
您还可以尝试使用root explorer app获取数据库.如果这不起作用,那么你可以试试这个:
adb shell
'su
chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
在此之后,您应该能够浏览有根设备上的文件.
Ani*_*han 21
要执行上述任何操作(即从手机本身访问受保护的文件夹),您仍需要root.(包括更改/ data文件夹的安装权限并访问它)
如果没有root,则无法通过代码从应用程序内/data
直接访问以进行读取.因此,您可以尝试将该文件复制到SD卡或可访问的位置,然后,您应该能够正常访问它.
如果您有开发人员设备,生根不会使您的保修失效.对不起,AFAIK没有任何其他方式.
Ale*_* P. 13
/data/data/package.name/databases/file
在未经验证的Android 5.0+设备上从可调试应用程序文件夹(例如)中提取文件的最简单方法(只需一个简单步骤)就是使用以下命令:
adb exec-out run-as package.name cat databases/file > file
Run Code Online (Sandbox Code Playgroud)
Isu*_*ghe 11
adb -d shell
run-as com.your.packagename cat databases/database.db > /sdcard/database.db
cd /sdcard
确保database.db
存在.adb pull /sdcard/database.db
或者只是您可以从设备复制database.db.Ngu*_*inh 10
在eclipse中使用文件资源管理器.选择Windows =>显示视图=>其他... =>文件资源管理器.
另一种方法是通过adb拉取文件:
adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
Run Code Online (Sandbox Code Playgroud)
打开命令行 cmd 并运行: adb backup -f C:\Intel\xxx.ab -noapk your.app.package。不要输入密码并单击备份我的数据。确保不要保存在驱动器 C 根目录上。你可能会被拒绝。这就是我保存在 C:\Intel 上的原因。
小智 5
我曾经也遇到过同样的问题。除了adb shell或rooting device,无法在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) {
}
}
Run Code Online (Sandbox Code Playgroud)
2)试试这个:https : //github.com/sanathp/DatabaseManager_For_Android
归档时间: |
|
查看次数: |
582257 次 |
最近记录: |