如何写入sd卡?
how to write to sd card?
我想在 Oppo A37 上将 SQLite 数据库备份到我的 SD 卡
我有权在清单
中写入外部
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
和这行代码
String outFileName = Environment.getExternalStorageDirectory().getPath() +
"/SQLite/" + DBNAME + "_" + ext;
在 运行 之后,db 文件将以多种形式出现:
/storage/emulated/0/Sqlite/
/mnt/sdcard/SQLite/
/sdcard/SQLite
/storage/sdcard0/SQLite/
也许更多,可能是同一事物的许多别名,但 全部在 phone 内部存储中。
我发现我想要的是“/storage/sdcard1/SQLite/”,所以我尝试使用 adb
adb -d shell "run-as com.photobangkok.expences cat
/data/data/com.photobangkok.expences/databases/money_DB > /storage/sd
card1/SQLite/money_DB"
确实有用,但是
String outFileName = "/storage/sdcard1/SQLite/" + DBNAME + "_" + ext;
产生错误(权限被拒绝)并且被 LINT
拒绝
运行 不知道如何使用我的 sd 卡!
有人可以帮我告诉我正确的代码行吗?
一旦找到 SD 卡的路径,您会发现无法再写入。 Google 不想这样。通常你可以写入一个特定的应用程序目录,如 ..../Android/data/<packagename>/files
.
如果幸运的话,您可以使用 getExternalFilesDirs() 找到最后一条路径。通常是第二个条目。
如果你想在整个 SD 卡上写入你应该使用存储访问框架并从 Intent.ACTION_OPEN_DOCUMENT_TREE 开始。
我想在 Oppo A37 上将 SQLite 数据库备份到我的 SD 卡 我有权在清单
中写入外部 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
和这行代码
String outFileName = Environment.getExternalStorageDirectory().getPath() +
"/SQLite/" + DBNAME + "_" + ext;
在 运行 之后,db 文件将以多种形式出现:
/storage/emulated/0/Sqlite/
/mnt/sdcard/SQLite/
/sdcard/SQLite
/storage/sdcard0/SQLite/
也许更多,可能是同一事物的许多别名,但 全部在 phone 内部存储中。
我发现我想要的是“/storage/sdcard1/SQLite/”,所以我尝试使用 adb
adb -d shell "run-as com.photobangkok.expences cat
/data/data/com.photobangkok.expences/databases/money_DB > /storage/sd
card1/SQLite/money_DB"
确实有用,但是
String outFileName = "/storage/sdcard1/SQLite/" + DBNAME + "_" + ext;
产生错误(权限被拒绝)并且被 LINT
拒绝运行 不知道如何使用我的 sd 卡! 有人可以帮我告诉我正确的代码行吗?
一旦找到 SD 卡的路径,您会发现无法再写入。 Google 不想这样。通常你可以写入一个特定的应用程序目录,如 ..../Android/data/<packagename>/files
.
如果幸运的话,您可以使用 getExternalFilesDirs() 找到最后一条路径。通常是第二个条目。
如果你想在整个 SD 卡上写入你应该使用存储访问框架并从 Intent.ACTION_OPEN_DOCUMENT_TREE 开始。