Je travaille avec Google Maps dans le studio android. J'ai déjà travaillé sur la création de marqueurs sur la carte et l'ajout de fenêtres d'informations personnalisées aux marqueurs. Lorsque je clique sur le marqueur, je veux stocker l'extrait de marqueur (c'est-à-dire actuellement une chaîne de caractères, disons "01345485645") dans une variable longue. Cet entier est ensuite utilisé pour faire un appel ou envoyer un message sur un clic de bouton.Comment convertir une chaîne en type Integer en android
Voici le code pour l'événement click marqueur:
private long phone_number;
@Override
public View getInfoContents(Marker marker) {
View v = getLayoutInflater().inflate(R.layout.custom_info_window, null);
TextView tv_name = (TextView) v.findViewById(R.id.tv_name);
tv_name.setText(marker.getTitle());
try {
phone_number = Integer.parseInt(marker.getSnippet().toString());
} catch(NumberFormatException nfe) {
System.out.println("Could not parse " + nfe);
}
return v;
}
});
Le code fonctionne très bien, sauf que lorsque je clique sur le bouton pour faire un appel ou envoyer un message la seule valeur stockée dans la longue phone_number semble être 00
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+phone_number));
Des suggestions?
EDIT:
J'ai la solution en utilisant
long phone_number = Long.valueOf(marker.getSnippet().toString()).longValue();
Avez-vous vérifié la valeur que vous obtenez de "marker.getSnippet"? – Umair
pouvez-vous poster votre extrait de code onclick trop – MadScientist
plutôt l'analyser peut-être vous pouvez simplement le valider en utilisant 'TextUtils.isDigitsOnly()' ou si vous voulez des contrôles plus strictes, vous pouvez créer votre propre regex ou vous pouvez essayer ce https : //github.com/googlei18n/libphonenumber – chronogenre