【问题标题】:SMS Conversation短信对话
【发布时间】:2014-04-01 10:46:31
【问题描述】:

我正在开发一个 SMS 应用程序。我能够发送和接收短信。

我有一个名为“收件箱”的标签。单击它时,我会使用 URI content://mms-sms/conversations/ 显示所有对话。

当点击任何对话时,我想显示那个人和我之间的所有 SMS 对话。

我已从 URI content://sms/inbox 获取该人的所有消息, 以及我从 URI content://sms/sent 发给那个人的消息。

现在,如何在自定义列表视图中显示这些消息,以便我的消息具有前缀“我”,而其他人的消息具有前缀“”并根据日期和时间排列?

【问题讨论】:

    标签: android listview


    【解决方案1】:

    我正在尝试做类似的事情。你解决了吗?我想我应该手动完成! 我认为使用电话号码作为登录名(并非所有公司都将号码存储在电话上),然后将消息号码与登录号码进行比较。 在布局上你可以有这样的东西:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:weightSum="1.0" >
    
        <TextView
            android:id="@+id/txtMessageDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="5dip"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:layout_marginTop="10dip"
            android:maxWidth="250dip"/>
    
        <TextView
            android:id="@+id/txtMessageRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/righttext"
            android:layout_marginLeft="16dp"
            android:maxWidth="250dip" />
    
        <TextView
            android:id="@+id/txtMessageLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="37dp"
            android:layout_toRightOf="@+id/lefttext"
            android:maxWidth="250dip"/>
    
    </RelativeLayout>
    

    Whit 记录的号码您可以知道该号码是来自您的号码还是来自另一边的号码,因此在代码中您可以扩展布局并使用“如果”您可以写下您的姓名或联系人姓名。 类似的东西:

    if(o.getOriginatingAddress().equals(MainActivity.loggedNumber))                
        tvOutMessage.setText("me: " + o.getMessageBody());
    else
        tvInMessage.setText("contact:" + o.getMessageBody());
    

    我不知道这是否是最好的解决方案,但希望它有所帮助。

    【讨论】:

    • 感谢您的回答,但我已经解决了。我从发件箱和收件箱中收集了相同号码的短信,并在字符串中添加了“我”和
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多