【问题标题】:Download Sqlite database into app internal storage将 Sqlite 数据库下载到应用程序内部存储中
【发布时间】:2015-01-06 20:16:18
【问题描述】:

我想在应用安装时下载手机运营商特定的 sqlite db。 我有以下代码可以使用 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 应该只用于外部数据而不是我需要在应用程序的私有访问中的数据?

【问题讨论】:

    标签: android sqlite android-download-manager


    【解决方案1】:

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多