9

私のアプリでは、SMSとMMSの両方のログをクエリして、すべての着信メッセージと発信メッセージの履歴を取得する必要があります。このコードはSMSでうまく機能しました:

Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null);

しかし、次のことを試してみると、まったく異なる結果が得られます。

Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null);

SMSクエリは、メッセージアドレス(電話番号)、連絡先名、メッセージの件名、メッセージ本文などを含むデータを返します。MMSの同じクエリは、意味をなさない一連のnullまたは数値フィールドを返します。の。電話番号または連絡先IDが関連付けられた、現在電話にあるすべてのMMSメッセージのリストが本当に必要です。また、メッセージが着信メッセージか発信メッセージかを確認する必要があります。SMSクエリの結果では、フィールドから電話番号を取得でき、addressフィールドから着信/発信タイプを取得できtypeますが、MMSをクエリすると、どちらも存在しません。

この種のMMSデータを照会する必要がある別のコンテンツURIはありますか?どんな助けでも大歓迎です。

編集:明確にするために、私はこれがサポートされていないコンテンツプロバイダーであることを完全に認識しています。ただし、これを行うためのサポートされている方法がないため、電話ごと/OSバージョンごとにこれをテストしてサポートするつもりです。議論を軌道に乗せるために、この質問はHTC Dream(G1)またはHTC Magic(MyTouch)上のAndroid1.6に固有であるとしましょう。その特定の電話とOSのバージョンでこのタスクをどのように達成しますか?または、それらでは不可能であるが、MotorolaDroidのAndroid2.0では可能である場合は、その情報も非常に役立ちます。しかし、それにもかかわらず、サポートされている方法またはサポートされていない方法でこのタスクを実行する方法の議論に固執し、APIでサポートされていないものから私たち全員を遠ざける方法の議論に委ねないようにしましょう。これは、Androidのディスカッショングループがいじくり回されていると私が感じていることであり、何の助けにもならない、と私は感じています。サポートされていない方法を使用している場合は、それで問題ありません。そのタスクを実行するためのサポートされている方法を教えてください。サポートされているメソッドがない場合、なぜAPIがandroid.permission.READ_SMSを介してSMSを読み取る許可を要求できるようにするのですか?

4

1 に答える 1

5

これらは、私が過去に使用したコンテンツURIです。取得した値をいじる必要があり、MMSの一部を取得するまでには長い道のりがありますが、役立つことを願っています。

// root URI for MMS messages
static final String MMS_CONTENT_URI = "content://mms";

// root URI for MMS and SMS threads
public static final String MMS_SMS_CONTENT_URI = "content://mms-sms";

// URI of MMS inbox
public static final String RECEIVED_MMS_CONTENT_URI = MMS_CONTENT_URI + "/inbox";

// URI where sent MMSes are stored
public static final String SENT_MMS_CONTENT_URI = MMS_CONTENT_URI + "/sent";

// URI where sent MMSes are stored
public static final String MMS_PART_URI = MMS_CONTENT_URI + "/part";

// URI for incoming SMSes (also triggers on MMSes)
public static final String SMS_INBOX_URI = "content://sms/inbox";
于 2011-02-07T19:32:43.927 に答える