如何在 android 应用中提及用户

how to mention user in android app

我想参考 to this question ,关于如何实现提及功能,但 android。

我想知道它在数据库中的具体情况。

主要是AutoCompleteTextView完成的,以及按键事件的处理。我不能写这样的代码。我可以给你简单的主要思想。您通过覆盖 onKeyUp() 方法

来监听用户在键盘上的点击
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_AT:
        // @ is clicked
        // get the usernames
        return true;
    default:
        return super.onKeyUp(keyCode, event);
    }
}

现在您应该开始从数据库中获取用户名,将它们放入 AutoCompleteTextView 适配器中以根据用户条目进行过滤,当用户选择要提及的朋友或某人时 "or many" 您将它们添加到一个 ArrayList 并向他们推送通知。

我想答案已经提供了旧的 post,

Listen to the input. When the user types an @, followed by a character, make a call to an url on your server (/user/lookup/?username=joe for example) that routes to a view which looks up up users beginning with joe. Return it as json and display it in a dropdown.

为了更简单,您需要使用 @ 作为关键字,用于理解用户名的开头。

例如用户键入以下消息

... was with @nour at NYC

在Java中你可以使用正则表达式检测@

boolean foundMatch = false;
Pattern regex = Pattern.compile("\b(?:@)\b");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();

如果输入字符串有 @ 关键字

,这将匹配

现在,一旦你得到 @ 关键字,就把 @ 之后的所有字符都拿走,直到你得到一个白色的 space。在此示例中,nour 应该是结果,因为它在 @ 之后开始并在 white space 之前结束。

在服务器部分,您可以将识别的名称识别为 USER_NAME

SELECT * FROM USERS WHERE USER_NAME = "nour";

当然用户名需要唯一。

希望对您有所帮助。