将Sqlite数据库下载到app内部存储中

时间:2015-01-06 11:45:06

标签: android sqlite android-download-manager

我想在应用程序的安装中下载手机操作员特定的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的私人访问中使用的数据?

1 个答案:

答案 0 :(得分:0)

您正尝试将数据库下载到内部存储中。您也尝试将文件下载到 / data / data / yourAppName / databases / ,这是不允许的。默认情况下,此路径受写保护。将文件下载到内部存储或外部存储。我的意思是给出可以下载和保存数据库文件的不同文件路径。然后读取下载的文件并提取数据。

希望这有帮助。