试图在Android上获取短信和彩信 - HTC问题

时间:2013-07-21 00:49:50

标签: android sms mms

我正在尝试编写自己的短信管理器,我发现很多教程如何使用URI和光标获取短信和彩信,但每次尝试我都遇到了无法解决的问题。希望你帮我一点。 好的,所以我一直在使用“content:// mms-sms / conversations /”,它既适用于短信也适用于彩信。当然不是。这段代码:

final String[ ] projection = new String[ ]{ "*" };
Uri uri = Uri.parse( "content://mms-sms/conversations/" );
Cursor query = getContentResolver( ).query( uri, projection, null, null, null );

TextView text = ( TextView )findViewById( R.id.textView1 );
text.setText( Integer.toString( query.getCount( ) ) );

返回13 这是假的,因为当我打开标准的android邮箱时,我计算了18个对话。

第二件事,也试图从对话中获得“地址”:

final String[] projection = new String[]{"*"};
Uri uri = Uri.parse("content://mms-sms/conversations/");
Cursor query = getContentResolver( ).query(uri, projection, null, null, null);
while( query.moveToNext( ) )
    System.out.println( "recv " + query.getString( query.getColumnIndexOrThrow( "address" ) ) ); 

有时地址是数字,有时是名称,有时是空的。为什么?我该如何解决这个问题?

第三件事,在许多教程中,在stackoverflow中,还有一个非常简单的解决方案,如何从MMS获取地址。从MMS获取cursor.getString(cursor.getColumnIndexOrThrow(“address”))并完成。 HTC不在此。我试过这个:

Cursor cursor = getContentResolver( ).query( Uri.parse( "content://sms/inbox" ), null, null, null, null );
if( cursor.moveToFirst( ) ) 
{
    for( int i = 0; i < cursor.getColumnCount( ); i++ ) 
        System.out.println( "SMS " + cursor.getColumnName( i ) ); 
}

for( int i = 0; i < 3; i++ )
        System.out.println( "***************************************************************" ); 

Cursor cursor2 = getContentResolver( ).query( Uri.parse( "content://mms/inbox" ), null, null, null, null );
if( cursor2.moveToFirst( ) ) 
{
    for( int i = 0; i < cursor2.getColumnCount( ); i++ ) 
        System.out.println( "MMS " + cursor2.getColumnName( i ) ); 
}

它又归还了我:

07-21 02:12:40.631: I/System.out(25221): SMS _id
07-21 02:12:40.631: I/System.out(25221): SMS thread_id
07-21 02:12:40.631: I/System.out(25221): SMS toa
07-21 02:12:40.631: I/System.out(25221): SMS address
07-21 02:12:40.631: I/System.out(25221): SMS person
07-21 02:12:40.631: I/System.out(25221): SMS date
07-21 02:12:40.631: I/System.out(25221): SMS protocol
07-21 02:12:40.631: I/System.out(25221): SMS read
07-21 02:12:40.631: I/System.out(25221): SMS status
07-21 02:12:40.631: I/System.out(25221): SMS type
07-21 02:12:40.631: I/System.out(25221): SMS reply_path_present
07-21 02:12:40.631: I/System.out(25221): SMS subject
07-21 02:12:40.631: I/System.out(25221): SMS body
07-21 02:12:40.631: I/System.out(25221): SMS sc_toa
07-21 02:12:40.631: I/System.out(25221): SMS report_date
07-21 02:12:40.631: I/System.out(25221): SMS service_center
07-21 02:12:40.631: I/System.out(25221): SMS locked
07-21 02:12:40.631: I/System.out(25221): SMS index_on_sim
07-21 02:12:40.631: I/System.out(25221): SMS callback_number
07-21 02:12:40.631: I/System.out(25221): SMS priority
07-21 02:12:40.631: I/System.out(25221): SMS htc_category
07-21 02:12:40.631: I/System.out(25221): SMS cs_timestamp
07-21 02:12:40.631: I/System.out(25221): SMS cs_id
07-21 02:12:40.631: I/System.out(25221): SMS cs_synced
07-21 02:12:40.631: I/System.out(25221): SMS error_code
07-21 02:12:40.631: I/System.out(25221): SMS seen
07-21 02:12:40.641: I/System.out(25221): SMS is_cdma_format
07-21 02:12:40.641: I/System.out(25221): SMS is_evdo
07-21 02:12:40.641: I/System.out(25221): SMS c_type
07-21 02:12:40.641: I/System.out(25221): SMS exp
07-21 02:12:40.641: I/System.out(25221): SMS gid
07-21 02:12:40.641: I/System.out(25221): SMS extra
07-21 02:12:40.641: I/System.out(25221): SMS date2
07-21 02:12:40.641: I/System.out(25221): 
***************************************************************
07-21 02:12:40.641: I/System.out(25221): 
***************************************************************
07-21 02:12:40.641: I/System.out(25221): 
***************************************************************
07-21 02:12:40.691: I/System.out(25221): MMS _id
07-21 02:12:40.691: I/System.out(25221): MMS thread_id
07-21 02:12:40.691: I/System.out(25221): MMS date
07-21 02:12:40.691: I/System.out(25221): MMS msg_box
07-21 02:12:40.691: I/System.out(25221): MMS read
07-21 02:12:40.691: I/System.out(25221): MMS m_id
07-21 02:12:40.691: I/System.out(25221): MMS sub
07-21 02:12:40.691: I/System.out(25221): MMS sub_cs
07-21 02:12:40.691: I/System.out(25221): MMS ct_t
07-21 02:12:40.691: I/System.out(25221): MMS ct_l
07-21 02:12:40.691: I/System.out(25221): MMS exp
07-21 02:12:40.691: I/System.out(25221): MMS m_cls
07-21 02:12:40.691: I/System.out(25221): MMS m_type
07-21 02:12:40.691: I/System.out(25221): MMS v
07-21 02:12:40.691: I/System.out(25221): MMS m_size
07-21 02:12:40.691: I/System.out(25221): MMS pri
07-21 02:12:40.691: I/System.out(25221): MMS rr
07-21 02:12:40.691: I/System.out(25221): MMS rpt_a
07-21 02:12:40.691: I/System.out(25221): MMS resp_st
07-21 02:12:40.691: I/System.out(25221): MMS st
07-21 02:12:40.691: I/System.out(25221): MMS tr_id
07-21 02:12:40.691: I/System.out(25221): MMS retr_st
07-21 02:12:40.691: I/System.out(25221): MMS retr_txt
07-21 02:12:40.691: I/System.out(25221): MMS retr_txt_cs
07-21 02:12:40.691: I/System.out(25221): MMS read_status
07-21 02:12:40.691: I/System.out(25221): MMS ct_cls
07-21 02:12:40.691: I/System.out(25221): MMS resp_txt
07-21 02:12:40.691: I/System.out(25221): MMS d_tm
07-21 02:12:40.691: I/System.out(25221): MMS d_rpt
07-21 02:12:40.691: I/System.out(25221): MMS locked
07-21 02:12:40.691: I/System.out(25221): MMS htc_category
07-21 02:12:40.691: I/System.out(25221): MMS cs_timestamp
07-21 02:12:40.691: I/System.out(25221): MMS cs_id
07-21 02:12:40.691: I/System.out(25221): MMS cs_synced
07-21 02:12:40.691: I/System.out(25221): MMS seen
07-21 02:12:40.691: I/System.out(25221): MMS extra
07-21 02:12:40.691: I/System.out(25221): MMS phone_type
07-21 02:12:40.691: I/System.out(25221): MMS date2

所以这意味着我在MMS中没有字段“地址”。那我该如何获得地址呢?我只能得到线索,但一半的谈话是看不见的。看起来编码自己的短信/彩信管理器是不可能的,HTC上有很多错误。

Google Play上有一款名为“GO短信加强版”的应用,可在我的手机上正常使用。所以这意味着有一种方法可以正确编码。我做错了什么?我该如何解决它并获得正确的短信和彩信?

2 个答案:

答案 0 :(得分:0)

从“content:// mms-sms / conversations /”更改为“content:// mms-sms / conversations”

答案 1 :(得分:0)

尝试

Uri    uri    = Uri.parse("content://mms-sms/conversations?simple=true");