studio programacion para móviles mensajes libros enviar desarrollo desarrollar curso codigo aprende aplicaciones android sms messages

para - manual de programacion android pdf



¿Cuántas columnas de base de datos asociadas con un SMS en Android? (6)

Debería poder rotar a través del Cursor y buscarlo usted mismo:

mCursor = managedQuery(sms, null, null, null, null); StringBuffer info = new StringBuffer(); for( int i = 0; i < mCursor.getColumnCount(); i++) { info.append("Column: " + mCursor.getColumnName(i) + "/n"); } Toast.makeText(getApplicationContext(), info.toString(), Toast.LENGTH_LONG).show();

Quiero leer todos los mensajes y sus respectivos detalles desde mi teléfono. Para esto estoy usando el Uri así:

Uri sms = Uri.parse("content://sms/");

Pero no sé cuántas columnas en la base de datos están asociadas con este uri.

Quiero mostrar la siguiente información:

  1. Tipo de mensaje
  2. Número de remitente
  3. Cuerpo del mensaje
  4. Marca de tiempo

Por favor, ¿alguien puede enumerar los nombres de columna totales?


Si solo desea saber qué está almacenado en un cursor en particular, simplemente puede usar DatabaseUtils.dumpCursor(cursor); para mostrar todas las columnas con valores en su consola


Teléfono Android 4.4.2 Ya que esta es una versión / contenido específico, no confíe en la clave de índice numérico

_id thread_id address m_size person date date_sent protocolo estado de lectura reply_path_present cuerpo del sujeto service_center bloqueado sim_id error_code visto ipmsg_id


paquete com.readsms;

import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; public class ReadSMS extends Activity { private static final String tag = "Whozzat"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Uri sms = Uri.parse("content://sms/inbox"); ContentResolver cr = this.getContentResolver(); Cursor c = cr.query(sms, null, null, null, null); for (int i = 0; i < c.getColumnCount(); i++) { Log.v(tag, c.getColumnName(i).toString()); } c.close(); } }

después de ejecutar este fragmento de código tengo las siguientes columnas:


content://sms no forma parte de la API oficial de Android, y como tal no es una buena idea usarlo. Puede dejar de funcionar, y algunos teléfonos que usan sus propias implementaciones para SMS (¿HTC Sense, quizás?) Pueden tener su propio proveedor de contenido que no funcionará con su código.

Dicho esto, si realmente quieres profundizar en él, puedes mirar el código fuente .

Pero nuevamente, preste atención a esta advertencia: http://android-developers.blogspot.com/2010/05/be-careful-with-content-providers.html .


Solo prueba esto:

public void showAllCNames (View v){ Uri uri = Uri.parse("content://sms/"); final Cursor cur = getContentResolver().query(uri, null, null, null, null); for (String s : cur.getColumnNames()){Log.d("COLUMN_NAME", s);} }

Corrí a través del nombre de la columna y lo conseguí:

COLUMN_NAME: _id

COLUMN_NAME: thread_id

COLUMN_NAME: dirección

COLUMN_NAME: persona

COLUMN_NAME: fecha

COLUMN_NAME: date_sent

COLUMN_NAME: sc_timestamp

COLUMN_NAME: protocolo

COLUMN_NAME: leer

COLUMN_NAME: estado

COLUMN_NAME: tipo

COLUMN_NAME: reply_path_present

COLUMN_NAME: asunto

COLUMN_NAME: cuerpo

COLUMN_NAME: service_center

COLUMN_NAME: bloqueado

COLUMN_NAME: sub_id

COLUMN_NAME: error_code

COLUMN_NAME: visto

COLUMN_NAME: lgeMsgType

COLUMN_NAME: lgeSiid

COLUMN_NAME: lgeCreated

COLUMN_NAME: lgeExpires

COLUMN_NAME: lgeReceived

COLUMN_NAME: lgeAction

COLUMN_NAME: lgeSec

COLUMN_NAME: lgeMac

COLUMN_NAME: lgeDoc

COLUMN_NAME: doInstalled

COLUMN_NAME: lgePinRemainCnt

COLUMN_NAME: index_on_icc

COLUMN_NAME: service_msg_sender_address

COLUMN_NAME: lgeCallbackNumber

COLUMN_NAME: sms_imsi_data