我将数据库的默认目录更改为sdcard,我想使用sqlitebrowser来访问此数据库并查看其数据,但是我可以从我的android文件管理器中看到这个数据库但是当我使用Windows文件管理器时我看不到我的SD卡中的数据库文件,我认为这是关于权限问题,但我该如何解决呢?
我的数据库在这里
public static String SDCard = Environment.getExternalStorageDirectory().getAbsolutePath()
+ File.separator ;
public DatabaseHelper(Context context) {
super(context, SDCard +DATABASE_NAME, null, DATABASE_VERSION);
transactionManager = new TransactionManager(getConnectionSource());
}
答案 0 :(得分:1)
有些Android手机的内存分为两个区块。
一个用于内部或/文件夹。内部存储器的另一部分由getExternalStorageDirectory()返回。这仍然是用户和/或PC端的内部存储器。但对于Android来说,它是外部存储器。
所以你可能正在寻找错误的文件夹。
例如在我的三星S4中我有:
/
/storage/emulated/0
/storage/extSdCard
“/ storage / emulated / 0”从getExternalStorageDirectory()返回,而“/ storage / extSdCard”是我的外部SD卡。
答案 1 :(得分:0)
您需要拥有 root访问权限的手机才能浏览Android手机上的数据文件夹(data/data/your.app.package.name
),这意味着您拥有开发者设备或者您已经< em> rooted 您的设备。
(您还需要以root模式运行ADB,这可以使用adb root
在命令行上实现)
如果您的手机没有root访问权限,您将无法访问数据库。
数据库默认具有rw-rw----
作为权限。要访问数据库,您应该使用* nix系统上的chmod
或Windows中的文件夹权限对话框更改权限级别(右键单击文件夹并为所有人设置权限)
见previous answer。您可以使用DDMS透视图访问数据库
答案 2 :(得分:0)
在MTP模式下挂载设备时bug,MTP数据库无法正确更新,客户端计算机无法看到新创建的对象。
作为一种变通方法,您可以在创建目录/文件后使用MediaScannerConnection
scanFile()
强制刷新数据库。