4

私はSMSアプリケーションを開発しています。SMSの送受信はできています。

「受信トレイ」という名前のタブがあります。それをクリックすると、 URI を使用してすべての会話を表示しcontent://mms-sms/conversations/ます。

任意の会話をクリックすると、その人との間のすべての SMS 会話が表示されます。

その人のすべてのメッセージを URI から取得し、その人content://sms/inboxへのメッセージをURI から取得しましたcontent://sms/sent

これらのメッセージをカスタム リスト ビューで表示して、自分のメッセージに「私」というプレフィックスが付き、他の人のメッセージに「< 名前/番号 >」というプレフィックスが付けられ、日付と時刻に従って配置されるようにするにはどうすればよいですか?

4

1 に答える 1

0

私は似たようなことをしようとしています。解決しましたか?手作りすればいいと思います!電話番号をログインとして使用し(すべての企業が電話番号を電話に保存しているわけではありません)、メッセージ番号とログに記録された番号を比較すると思います。レイアウトでは、次のようなものを使用できます。

<?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>

ログに記録された番号があなたの番号からのものか、反対側の番号からのものかを知ることができるので、コードでレイアウトを膨らませることができ、「if」を使用して自分の名前または連絡先の名前を書くことができます。これに似たもの:

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

これが最善の解決策かどうかはわかりませんが、お役に立てば幸いです。

于 2012-09-05T17:30:01.657 に答える