0

我正在为旅游业开发一个 Android 应用程序。所有数据都可以离线使用,无需任何互联网连接。该应用程序包含一个地图,其中数据也仅在离线模式下可用。因此,我为此使用 Openstreetmap 和 osmdroid,所有需要的地图数据都包含在应用程序文件中。唯一可能连接到互联网的活动是启动应用程序时,检查是否有新数据可用,并最终将新数据下载到应用程序文件夹中。

我添加了视图的框图: 在此处输入图像描述

我的问题是,我怎样才能只使第一个活动,即启动活动(图像中的红色块)连接到互联网,并确保所有其他活动在任何情况下都无法连接到互联网。因为当用户滚动出集成地图的区域时,我与 Openstreetmap 的活动可能无法连接到 Internet 以下载新的地图图块,这一点非常重要。它并不打算完全关闭整个 Android 设备的网络连接,因此它也对其他应用程序关闭。

提前非常感谢!

4

2 回答 2

0

如果你声明

   <uses-permission /> 

对于清单中的 Internet,则适用于所有活动。您不能限制外部库的功能。所以尝试使用受信任的库。

于 2012-03-19T08:55:59.597 回答
0

感谢您的回复!

但我已经解决了我自己的问题。

我知道我可以使用 . 这确实是我的问题,如果所需的地图图块尚未本地存储,那么带有地图的屏幕也会从网络下载新数据。

我终于找到了在osmdroid中选择地图瓦片来源的方法:本地存储瓦片或从互联网下载它们。在 osmdroid-android-xxx.jar 的 OpenStreetMapTilesOverlay 类中,您可以使用以下方法设置图块源:

/**
     * Set whether to use the network connection if it's available.
     * @param aMode
     * if true use the network connection if it's available.
     * if false don't use the network connection even if it's available.
     */
    public void setUseDataConnection(boolean aMode) {
            mTileProvider.setUseDataConnection(aMode);
    }

因此,我实现了此代码以仅使用离线地图图块:

 mapView.setUseDataConnection(false);

其中 mapView 是我的 OSM MapView

有好的发展!

于 2012-03-20T13:56:11.053 回答