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:
- Tipo de mensaje
- Número de remitente
- Cuerpo del mensaje
- 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