¿Cuántas columnas de base de datos asociadas a un SMS en android?

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

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

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

Quiero mostrar la siguiente información:

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

Por favor, ¿puede alguien enumerar el total de nombres de columna?

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:

texto alternativo

Usted debe ser capaz de girar a través del cursor y buscar por ti 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(); 

content://sms no es 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 utilizan sus propias implementaciones para SMS (HTC Sense, tal vez?) Pueden tener su propio proveedor de contenido que no funcionará con su código.

Dicho esto, si realmente quieres cavar en él, puede mirar el código fuente para ello.

Pero otra vez, tenga en cuenta esta advertencia: http://android-developers.blogspot.com/2010/05/be-careful-with-content-providers.html .

Sólo 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: date

COLUMN_NAME: date_sent

COLUMN_NAME: sc_timestamp

COLUMN_NAME: protocolo

COLUMN_NAME: leer

COLUMN_NAME: estado

COLUMN_NAME: escriba

COLUMN_NAME: reply_path_present

COLUMN_NAME: subject

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

Si sólo desea saber qué se almacena en el cursor en particular, simplemente puede utilizar DatabaseUtils.dumpCursor(cursor); Para mostrar todas las columnas con valores en la consola

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

_id dirección de subproceso m_size persona fecha date_sent protocolo lectura estado tipo reply_path_present sujeto cuerpo service_center bloqueado sim_id error_code visto ipmsg_id

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.