Я пытаюсь написать, а затем загрузить файл KML с помощью Карт Google через Intent. Я попробовал как внутреннее, так и внешнее хранилище для файла KML - кажется, что он пишет правильно, но я продолжаю получать следующую ошибку Toast в Google Maps:
Не найдено результатов для: file: /// data / data / [путь к пакету моего приложения] /kml_to_view.kml
Запись в файл
File dir = context.getFilesDir();
//File dir = Environment.getExternalStorageDirectory();
Log.d(TAG, "Writing to dir: " + dir);
File kmlFile = new File(dir, KML_FILE_NAME);
FileOutputStream fos;
try
{
kmlFile.createNewFile();
fos = context.openFileOutput(KML_FILE_NAME, Context.MODE_WORLD_READABLE);
//fos = new FileOutputStream(kmlFile);
fos.write(kmlData.getBytes());
fos.close();
isKMLPrepared = true;
Toast.makeText(context, "file write successful", Toast.LENGTH_LONG);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG);
e.printStackTrace();
}
Как видите, у меня есть части, необходимые для записи во внутреннюю память или на внешнюю, и я попробовал обе.
Отправка KML на карты
File dir = context.getFilesDir();
Log.d(TAG, "Local file path: " + dir);
readInternalStoragePrivate(KML_FILE_NAME);
mapsIntent = new Intent(Intent.ACTION_VIEW);//Uri.parse("http://maps.google.com/maps"));
//String uri = "geo:0,0?q=file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + KML_FILE_NAME;
String uri = "geo:0,0?q=file://" + context.getFilesDir().getAbsolutePath() + "/" + KML_FILE_NAME;
Log.d(TAG, "URI: " + uri);
mapsIntent.setData(Uri.parse(uri));
Снова я попытался прочитать как внутренние, так и внешние местоположения при отправке пути в приложение Maps.
Есть идеи, что мне нужно сделать, чтобы приложение "Карты" считывало и обрабатывало локально сохраненный файл KML? Я прочитал ряд других постов, но пока не нашел решения своей проблемы.