/ / Tentativa de receber SMS e MMS no Android - problemas com HTC - android, sms, mms

Tentativa de receber SMS e MMS no Android - problemas com HTC - android, sms, mms

Estou tentando escrever meu próprio gerenciador de SMS eEncontrei muitos tutoriais sobre como obter SMS e MMS com URI e Cursor, mas cada tentativa está tendo problemas que não consigo resolver. Espero que você me ajude um pouco. Ok, então eu tenho usado "content: // mms-sms / conversations /", que deve funcionar tanto para SMS quanto para MMS. Claro que não. Este código:

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( ) ) );

Retorno 13 o que é falso, porque quando abri minha caixa de correio padrão do Android, contei 18 conversas.

Segunda coisa, também tentou obter "endereço" das conversas:

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" ) ) );

Às vezes, o endereço é um número, às vezes é um nome e às vezes é nulo. Por quê? Como posso consertar isso?

Terceira coisa, em muitos tutoriais, no stackoverflowAlém disso, existe uma solução muito simples de como obter endereços do MMS. Basta obter o cursor.getString (cursor.getColumnIndexOrThrow ("address")) do MMS e pronto. Não aqui na HTC. Eu tentei isso:

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 ) );
}

E isso me devolveu:

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

Portanto, significa que não tenho campo "endereço" no MMS. Então, como posso obter o endereço? Só consigo falar, mas metade da conversa é invisível. Parece que é impossível codificar o próprio gerente de SMS / MMS, existem muitos bugs no HTC.

Há um aplicativo no Google Play chamado "GO SMS Pro" que funciona bem no meu telefone. Então isso significa existe uma maneira de codificá-lo corretamente. O que eu faço de errado? Como posso corrigi-lo e obter SMS e MMS corretamente?

Respostas:

0 para resposta № 1

Altere de "conteúdo: // mms-sms / conversations /" para "content: // mms-sms / conversations"


0 para resposta № 2

Experimentar

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