在代码中我写了一些注释。
我需要获取用户的电话号码。 Api telegraph 允许您使用 keyboardButton.setText("Share your number>").setRequestContact(true);
用户收到一条消息,然后单击一下即可发送联系人。之后,我尝试在控制台中显示联系人 System.out.println(update.getMessage().getContact());
,但我总是得到 null
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
long chat_id = update.getMessage().getChatId();
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
}
}
最佳答案
当用户按下“分享你的号码>”按钮时,对象 update.getMessage().getContact() 不为 null
尝试像这样更改您的代码:
if (update.getMessage().getText().equals("/start")) {
SendMessage sendMessage = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
// create keyboard
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(true);
// new list
List<KeyboardRow> keyboard = new ArrayList<>();
// first keyboard line
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardButton keyboardButton = new KeyboardButton();
keyboardButton.setText("Share your number >").setRequestContact(true);
keyboardFirstRow.add(keyboardButton);
// add array to list
keyboard.add(keyboardFirstRow);
// add list to our keyboard
replyKeyboardMarkup.setKeyboard(keyboard);
try {
sendMessage(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}else{
System.out.println("#############");
System.out.println(update.getMessage().getContact());
System.out.println("#############");
}
关于java - Telegram api,无法获取电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46315088/