私はアンドロイドスタジオのgoogleマップで作業しています。私は既にマップ上にマーカーを作成し、マーカーにカスタム情報ウィンドウを追加する作業をしました。マーカーをクリックすると、マーカーのスニペット(現在は文字列で "01345485645"と言うことができます)を長い変数に格納します。この整数を使用して、ボタンクリック時に電話をかけたり、メッセージを送信したりします。ここで文字列をアンドロイドの整数型に変換する方法
は、マーカーのクリックイベントのコードです:
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;
}
});
コードは、私が電話をかけるために、ボタンをクリックするか、メッセージを送信するときに、長いPHONE_NUMBERに保存されている唯一の値は00
ように見えることを除いて正常に動作しますIntent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+phone_number));
EDIT:(32ビット・マシン用)の整数であるため
私は
long phone_number = Long.valueOf(marker.getSnippet().toString()).longValue();
あなたが "marker.getSnippet" から得ているどのような値がチェックしていますか? – Umair
あなたは、むしろそれは多分あなただけ使用して、それを検証することができますパースすぎ – MadScientist
あなたのonclickのコードスニペットを投稿することができます 'TextUtils.isDigitsOnly()' またはあなたがあなた自身の正規表現を作成することも、より厳密なチェックをしたいか、あなたはこれを試すことができます場合は、HTTPS ://github.com/googlei18n/libphonenumber – chronogenre