¿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.
- ¿Cómo puedo leer los mensajes SMS desde el dispositivo mediante programación en Android?
- Android 1.5: Lectura de mensajes SMS
- Enviar SMS con Genymotion
- Cómo hacer copias de seguridad de los contactos o sms en la tarjeta SD como archivo .xml o .csv y restaurarlos más tarde
- Obtén todos los mensajes de WhatsApp
Quiero mostrar la siguiente información:
- Tipo de mensaje
- Número de remitente
- Cuerpo del mensaje
- Timestamp
Por favor, ¿puede alguien enumerar el total de nombres de columna?
- Enviar mensaje al usuario en WhatsApp desde mi aplicación (Android)
- ¿Cómo leer los últimos 3 sms de la bandeja de entrada en Android?
- Verificación del número de teléfono Android
- Eliminar un sms de la bandeja de entrada
- Habilitar el soporte de SMS en Hangouts 2.0 rompe el BroadcastReceiver de SMS_RECEIVED en mi aplicación
- Obtener mensajes de la bandeja de entrada desde el dispositivo Android para mostrarlo en el listview personalizado
- Android: Enviar SMS y hacer que aparezca en la bandeja de entrada SMS?
- Intercepción de SMS de Android sin icono de notificación o mensajes WAP-PUSH
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:
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