Как открывать файл KML с назначенным по умолчанию App в Android?

Как возможно вооружать один Intent с файлом формат .KML, для так явитесь списком совместимых Apps с форматом .KML "Keyhole Маркуп Лангвахе". (Google Earth, Maps Me, GPXviewer и т.д....) Файл это у меня есть внутри папки res/raw/ruta_sendero1.kml

4
задан 16.03.2016, 01:46
2 ответа

Решенные ! , Чтобы читать файлы xml, json внутреннего ресурса

public ByteArrayOutputStream readFileResource(int fileName) {

    InputStream inputStream = getResources().openRawResource(fileName);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    int ctr;
    try {
        ctr = inputStream.read();
        while (ctr != -1) {
            outputStream.write(ctr);
            ctr = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    //Log.v("Text Data", String.valueOf(outputStream.size()));
    return outputStream;
}

FunciГіn, чтобы сохранять файл во внешней памяти

public boolean saveExternalFile(ByteArrayOutputStream inputStream, String fileName) {
    OutputStream outputStream = inputStream;
    String fullPath = Environment.getExternalStorageDirectory().toString();

    File myFile = new File(fullPath, fileName);

    if(myFile.exists()) myFile.delete();
    try {
        myFile.createNewFile();
        outputStream = new FileOutputStream(myFile);
        inputStream.writeTo(outputStream);
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}

CГіdigo, чтобы открывать ruta_sendero1.kml с какой-то aplicaciГіn, чтобы отображать KML

ByteArrayOutputStream byteArrayOutputStream = readFileResource(R.raw.ruta_sendero1);
saveExternalFile(byteArrayOutputStream, "sample2.kml");

File file = new File(Environment.getExternalStorageDirectory(), "sample2.kml");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.google-earth.kml+xml");
try {
    startActivity(intent);
} catch (ActivityNotFoundException ex) {
    Toast.makeText(getApplicationContext(), "No tiene aplicación para ver KML", Toast.LENGTH_SHORT).show();
}
1
ответ дан 24.11.2019, 14:43

Чтобы реализовывать intent файла KML (Кеиоле Маркуп Language), важно иметь правильного ИЗБАЛУЙТЕ TYPE, которого

application/vnd.google-earth.kml+xml

Восток, это пример:

//obtiene archivo.
File file = new File(Environment.getExternalStorageDirectory(), "mi_mapa_google_earth.kml"); 
Intent intent = new Intent(Intent.ACTION_VIEW);
//Agrega datos al intent definiendo MIME TYPE.
intent.setDataAndType(Uri.fromFile(file), "application/vnd.google-earth.kml+xml"); 

//Agrega el id (placeMark).
intent.putExtra("com.google.earth.EXTRA.tour_feature_id",  "mi_tour");
//Inicia Actividad.
startActivity(intent);
2
ответ дан 24.11.2019, 14:43
  • 1
    Спасибо, в и # 241; adido в soluci и # 243; n. – Webserveis 15.03.2016, 23:47