我想在应用程序的安装中下载手机操作员特定的sqlite数据库。 我有以下代码使用DownloadManager下载new_db。 但我得到以下例外。
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.xyz.abc/com.xyz.abc.MainActivity}:
java.lang.SecurityException: Destination must be on external storage:
file:///data/data/com.xyz.abc/databases/new_db.gz
代码:
Uri uri=Uri.parse("http://download_url_of_mine?cellinfo=404_45_1_2");
String databasePath = context.getDatabasePath("existing_db.db").getParent();
lastDownload=
mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("Title")
.setDescription("Downloading Data Once for all.")
.setDestinationUri(Uri.fromFile(new File(databasePath+"/new_db.gz"))));
非常感谢任何帮助! 是不是DownloadManager应该仅用于外部数据而不是我需要在app的私人访问中使用的数据?
答案 0 :(得分:0)
您正尝试将数据库下载到内部存储中。您也尝试将文件下载到 / data / data / yourAppName / databases / ,这是不允许的。默认情况下,此路径受写保护。将文件下载到内部存储或外部存储。我的意思是给出可以下载和保存数据库文件的不同文件路径。然后读取下载的文件并提取数据。
希望这有帮助。