欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在手机上将Android百度离线地图APK文件转换为内置存储使用指南

最编程 2024-02-07 07:44:43
...
package com.wjw.ceshi.util;

import android.content.Context;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

public class MapOffLine {

public static void copy(Context context) {
try {
// 这个数组用来存放离线地图文件的名称
String fileName[] = {
"binzhou_235.dat",
"dezhou_372.dat",
// 如果有其他的就加进来,因为是确定的所以说这样写尽管不合适,但是也行...
};
// 这个是百度地图在没有网络的时候读取离线文件的目录,也就是说我们要把APP assets文件夹下的百度离线地图包放到这个文件夹下。
String path = context.getExternalFilesDir("/BaiduMapSDKNew/vmp").getPath();
// 每个文件的路径,也是个数组
String filepath[] = {
path + "/" + fileName[0],
path + "/" + fileName[1],
// 也是,fileName数组有几个就写几个。。。
};
File file = new File(path);
if (!file.exists()) { // 判断一下这个路径有没有,没有的话就创建一下
file.mkdir();
}
// 循环我们的地图文件
for (int i = 0; i < fileName.length; i++) {
// 如果这个地图文件没有
if (!(new File(filepath[i])).exists()) {
// 如果手机内存没有这个文件就去创建一个文件
new File(filepath[i]).createNewFile();
// 一个流操作,把APP assets文件下对应的文件放进去,循环完成就OK了。
InputStream is = context.getAssets().open(
fileName[i]);
FileOutputStream fos = new FileOutputStream(filepath[i]);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}

}
} catch (Exception e) {
e.printStackTrace();
}
}

}