我想在Oppo A37上将SQLite数据库备份到我的SD卡 我有权在清单
中写入外部<div class="relative">
Test data Test Data Test Data
<div class="absolute1">
SomedataT Data Test Data Test data Test Data Test DataTest data Test Data
<div class="absolute2">
top 2
</div>
</div>
</div>
和这行代码
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
运行db文件后会出现几个版本:
String outFileName = Environment.getExternalStorageDirectory().getPath() +
"/SQLite/" + DBNAME + "_" + ext;
也许更多,可能是同一件事的很多别名,但全部都在手机内部存储空间。
我发现我想要的是&#34; / storage / sdcard1 / SQLite /&#34;所以我尝试了adb
/storage/emulated/0/Sqlite/
/mnt/sdcard/SQLite/
/sdcard/SQLite
/storage/sdcard0/SQLite/
确实有效但
adb -d shell "run-as com.photobangkok.expences cat
/data/data/com.photobangkok.expences/databases/money_DB > /storage/sd
card1/SQLite/money_DB"
产生错误(Permission Denied)并且被LINT挫败
没有关于如何使用我的SD卡的想法! 有人可以帮我告诉我使用正确的代码行吗?
答案 0 :(得分:0)
一旦你发现SD卡的路径,你会发现你不能再写它了。谷歌不希望如此。通常,您可以写一个特定的应用目录,如..../Android/data/<packagename>/files
。
如果幸运的话,你可以找到getExternalFilesDirs()的最后一条路径。通常是第二个条目。
如果要在整个SD卡上书写,则应使用存储访问框架,并以Intent.ACTION_OPEN_DOCUMENT_TREE开头。