Autore Topic: Lanciare google earth con dati a corredo  (Letto 566 volte)

Offline grisson

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Gt I9070
  • Sistema operativo:
    Android 2.3.6
Lanciare google earth con dati a corredo
« il: 03 Marzo 2013, 11:38:38 CET »
0
Buongiorno a tutti.
Ho bisogno di un consiglio su come lanciare l'app di google earth, passando contestualmente i dati kml.

Attualmente, il codice è questo:
Codice: [Seleziona]
public void onClick(View v) {
                                File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "eolopointer_".concat(Integer.toString((int) (Math.random() * 10000000))).concat(".kml"));
                               
                           
                                try {
                                        BufferedWriter out = new BufferedWriter(new FileWriter(file), 32768);
                                out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><kml xmlns=\"http://www.opengis.net/kml/2.2\"><Document>...[cut]....</Placemark></Document></kml>");
                                out.close();
                            } catch (IOException e) {
                                    Toast.makeText(getApplicationContext(), "Errore trasferimento dati a Google earth", Toast.LENGTH_SHORT).show();
                                   
                            }
                                Intent intent = new Intent(Intent.ACTION_VIEW);
                                intent.setDataAndType(Uri.fromFile(file), "application/vnd.google-earth.kml+xml");
                                startActivity(intent);
                               
                        }

Il problema è che mentre sul mio android 2.3.6 non ho (quasi, dopo spiego) problemi, su un android ics o jb ricado sempre nella IOException.
La modalità è corretta o sbaglio in qualche parte?


Il quasi, è riferito a questa riga:
Codice: [Seleziona]
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "eolopointer_".concat(Integer.toString((int) (Math.random() * 10000000))).concat(".kml"));Sono costretto a generare un nome di file casuale perchè se "sovrascrivo" sempre lo stesso, gearth non mi prende mai i file successivi al primo. Non è un problema se nel tempo tende ad accumulare qualche kb di dati di visto che l'app viene usata da 4 persone (siamo in 4 davvero, non 4 per dire poca gente! :D), e ci può andare bene. Ovvio che se fosse possibile evitare sarebbe meglio.

A presto!

Post unito: 03 Marzo 2013, 13:51:47 CET
mi sono appena accorto di aver scritto qualche fesseria.

Ho comunque cambiato la funzione onCLick con questo codice:
Codice: [Seleziona]
public void onClick(View v) {
                               
                                String geoUriString="http://[url_cut]/kmlgen.php?clilat="+cliLat.getText().toString()+"&clilong="+cliLong.getText().toString()+"&btslong="+btsLong.getText().toString()+"&btslat="+btsLat.getText().toString();
                               
                                Intent intent = new Intent(Intent.ACTION_VIEW);
                                intent.setDataAndType(Uri.parse(geoUriString), "application/vnd.google-earth.kml+xml");
                                startActivity(intent);
                               
                               
                        }

Su android 2.3.6 funziona. Prossimamente vedrò anche su >4.0 come si comporta
« Ultima modifica: 03 Marzo 2013, 13:51:47 CET da grisson, Reason: Merged DoublePost »