Hola, tengo un pequeño problemilla, que parecerá una chorrada, pero estoy atascado y no hay manera.
El caso es que utilizo mapview para mostrar un mapa offline, previamente descargado. Se utilizad una librería para mostrar los mapas offline de osm etc.
El codigo que muestra el mapa es el siguiente:
public class uno extends MapActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapView mapView = new MapView(this);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
mapView.setMapFile(new File("/sdcard/mapa.map"));
setContentView(mapView);
}
}
Coge el mapa de la sd, porque de asserts o res/raw no funciona. Lo que quiero es que al iniciar la aplicación me copie el mapa a la sd/data/miaplicacion.
La respuesta que me dan en el dev de la librería en cuestión es vaga: https://groups.google.com/group/mapsforge-dev/browse_thread/thread/b022652a665e0968?hl=en
http://www.google.com/url?sa=D&q=http://androideity.com/2011/11/03/escribiendo-archivos-en-la-memoria-externa-sd-card/&usg=AFQjCNHVdz8--f4aSyOByQb7rlHGEVc-_g esto copia un texto y no sé como hacer para que copie el archivo.
Aquí hay una solución, pero no me funciona, me tirar error la aplicación...
http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard
private void CopyAssets() {
AssetManager assetManager = getAssets();
String[] files = null;
try {
files = assetManager.list("");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
for(String filename : files) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
out = new FileOutputStream("/sdcard/" + filename);
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch(Exception e) {
Log.e("tag", e.getMessage());
}
}
}
private void copyFile(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
A ver si alguien me puede echar una manita...