首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android中重新制作从sdcard到assets的maploading

在android中重新制作从sdcard到assets的maploading
EN

Stack Overflow用户
提问于 2017-03-18 03:43:25
回答 1查看 190关注 0票数 0

我尝试从资产文件夹中的现有文件加载,而不是像下面的代码那样从SD卡加载:

代码语言:javascript
运行
复制
MapDataStore mapDataStore = new MapFile(
    new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "berlin.map"));

我不确定如何在Android中做到这一点,并寻求帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 06:27:28

如果我没记错的话,您不能访问assets文件夹中的.map文件。你必须把它从那里复制到SD卡上。

代码语言:javascript
运行
复制
private void provideMapData() {
    String sourceFile = res.getString(R.array.mapsource);
    String destinationFile = res.getString(R.array.mapdestination);
    String pathPrefix = activity.getExternalFilesDir(null) + "/";

    File directory = new File(pathPrefix);
    if (directory.exists() | directory.mkdirs()) {
        AssetManager assetManager = activity.getAssets();
        InputStream inputStream;
        OutputStream outputStream;
        File file = new File(pathPrefix + destinationFile);

        if (!file.exists()) {
            try {
                inputStream = assetManager.open(sourceFile);
                outputStream = new FileOutputStream(file);
                byte[] buffer = new byte[8192];
                int read;
                while ((read = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, read);
                }
                inputStream.close();
                outputStream.flush();
                outputStream.close();
            } catch (IOException iOE) {
                Log.e("Error: ", "provideMapData()");
            }
        }
    }
}

然后,我像这样加载MapDataStore:

代码语言:javascript
运行
复制
MapDataStore mapDataStore = new MapFile(new File(activity.getExternalFilesDir(null) + "/" + destinationFile));

根据this的说法,您应该将以下内容放入清单文件中:

代码语言:javascript
运行
复制
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="18" />

它将使您不必显式地要求用户授予WRITE_EXTERNAL_STORAGE权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42865909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档