这是 main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:onClick="eliminar">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:scrollbars="vertical">
<TableRow
android:id="@+id/nuevo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
这是活动代码:
package sms.manager;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
public class SMSManagerActivity extends Activity implements
OnItemClickListener,OnTouchListener {
private String numero,texto,recibeNumBandera="";
public Button nuevo_mensaje,marcarVarios,eliminarMen;
public ListView mensajes;
private String []almacenaNombres,almacenaNumeros,datos,datos2;
private int posicion,n,cantFilas=0,cant,posicionInfo=0;
private ArrayAdapter<?> adaptador;
public boolean entra=true,banderaServicio=true,inhabilitar=true;
private TimerTask task;
private Handler handler=new Handler();
private Timer t=new Timer();
private String maximo="";
private TableRow menu,nuevo,tableRow1;
private TextView contienetexto;
public ImageView icono;
private LinearLayout layoutCheks,linearMain;
private Array array;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mensajes=(ListView)findViewById(R.id.mensajes);
mensajes.setOnItemClickListener(this);
menu=(TableRow)findViewById(R.id.menu);
marcarVarios=(Button)findViewById(R.id.marcarVarios);
eliminarMen=(Button)findViewById(R.id.eliminarMen);
nuevo=(TableRow)findViewById(R.id.nuevo);
registerForContextMenu(mensajes);
nuevo_mensaje=(Button)findViewById(R.id.nuevo_mensaje);
nuevo_mensaje.setOnTouchListener(this);
LayoutInflater infl = (LayoutInflater)getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
View view = infl.inflate(R.layout.cheks,null);
icono=(ImageView)view.findViewById(R.id.icon);
icono.setVisibility(8);
Intent service = new Intent(this, Servicios.class);
startService(service);
llenarList();
task = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
marcar();
}
});
}};
t.schedule(task, 500, 500);
}
public boolean onKeyDown(int keyCode, KeyEvent event){
final Principal_mensajes cierraPrin= new Principal_mensajes();
final ListaContactos lista= new ListaContactos();
final Conversaciones conv= new Conversaciones();
if (keyCode==KeyEvent.KEYCODE_BACK){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("SMS Manager se cerrará")
.setCancelable(false)
.setPositiveButton("Sí", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
cierraPrin.finish();
lista.finish();
conv.finish();
finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
}
else if (keyCode==KeyEvent.KEYCODE_HOME){
cierraPrin.finish();
lista.finish();
conv.finish();
finish();
return true;
}
else if (keyCode==KeyEvent.KEYCODE_MENU){
menu.setVisibility(0);
return true;
}
else
{
return false;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (inhabilitar){
BaseDeDatos db2=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase desmarca=db2.getWritableDatabase();
desmarca.execSQL("UPDATE conversaciones SET noLeido='' WHERE number='" +
almacenaNumeros[position] + "'");
desmarca.close();
db2.close();
llenarList();
Intent abreConversacion=new Intent(this,Conversaciones.class);
abreConversacion.putExtra("contactoNom", almacenaNombres[position]);
abreConversacion.putExtra("contactoNum", almacenaNumeros[position]);
startActivity(abreConversacion);
}
}
public void llenarList(){
BaseDeDatos suplente=new BaseDeDatos(this,"administradorDeMensajes", null,5);
SQLiteDatabase base=suplente.getReadableDatabase();
Cursor cursor=base.rawQuery("SELECT *,count(body) FROM conversaciones GROUP BY
number ORDER BY address ASC",null);
cantFilas=cursor.getCount();
String fecha="";
String nombre="";
String cuerpo="";
String numero="";
String cantidad="";
String noLeido="";
datos=new String[cursor.getCount()];
almacenaNombres=new String[cursor.getCount()];
almacenaNumeros=new String[cursor.getCount()];
n=-1;
while (cursor.moveToNext()){
fecha=cursor.getString(cursor.getColumnIndex(("date")));
nombre=cursor.getString(cursor.getColumnIndex(("address")));
cuerpo=cursor.getString(cursor.getColumnIndex(("body")));
noLeido=cursor.getString(cursor.getColumnIndex(("noLeido")));
numero=cursor.getString(cursor.getColumnIndex(("number")));
cantidad=cursor.getString(cursor.getColumnIndex(("count(body)")));
if (cuerpo.length()>25){
cuerpo=cuerpo.substring(0,25) + "...";
}
if (!(noLeido!=null)){
noLeido="";
}
n++;
if (nombre.equals("No agendado")){
datos[n]=noLeido + numero + "\n" + fecha + "\n" + cuerpo + "\n(" +
cantidad + ") mensajes";
}
else
{
datos[n]=noLeido + nombre + "\n" + fecha + "\n" + cuerpo + "\n(" + cantidad
+ ") mensajes";
}
almacenaNombres[n]=nombre;
almacenaNumeros[n]=numero;
}
cursor.close();
base.close();
suplente.close();
if (cantFilas!=0){
adaptador=new ArrayAdapter<Object>
(this,android.R.layout.simple_list_item_1,datos);
mensajes.setAdapter(adaptador);
}
else
{
Toast ninguno=Toast.makeText(SMSManagerActivity.this,"Lista de mensajes
vacía",Toast.LENGTH_LONG);
ninguno.show();
}
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg0.getId()==nuevo_mensaje.getId()){
Intent nuevo = new Intent(this,Principal_mensajes.class);
startActivity(nuevo);
return true;
}
return false;
}
public void marcar(){
SharedPreferences p=getSharedPreferences("DatosNumero",Context.MODE_PRIVATE);
recibeNumBandera=p.getString("numeroPasado","");
if (!recibeNumBandera.equals("")){
task.cancel();
BaseDeDatos db=new BaseDeDatos(SMSManagerActivity.this,"administradorDeMensajes",
null,5);
SQLiteDatabase insertar=db.getWritableDatabase();
insertar.execSQL("UPDATE conversaciones SET noLeido='' WHERE number='" +
recibeNumBandera + "'");
insertar.close();
db.close();
BaseDeDatos sel=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase max=sel.getReadableDatabase();
Cursor cursorMax=max.rawQuery("SELECT max(id) as maximo FROM conversaciones WHERE
number='" + recibeNumBandera + "'",null);
while (cursorMax.moveToNext()){
maximo = cursorMax.getString(cursorMax.getColumnIndex(("maximo")));
}
cursorMax.close();
max.close();
sel.close();
BaseDeDatos db3=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase insertar2=db3.getWritableDatabase();
insertar2.execSQL("UPDATE conversaciones SET noLeido='*' WHERE number='" +
recibeNumBandera + "' AND id='" + maximo + "'");
insertar2.close();
db3.close();
BaseDeDatos PasaNum2=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase paraEsc=PasaNum2.getWritableDatabase();
paraEsc.execSQL("DELETE FROM PasaNum");
paraEsc.close();
PasaNum2.close();
llenarList();
SharedPreferences pr=getSharedPreferences
("DatosNumero",Context.MODE_PRIVATE);
Editor ed=pr.edit();
ed.putString("numeroPasado","" );
ed.commit();
task.run();
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)
menuInfo;
menu.setHeaderTitle(almacenaNombres[info.position]);
posicionInfo=info.position;
menu.add(0, v.getId(), 0, "Ver");
menu.add(0, v.getId(), 0, "Eliminar conversación");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="Ver"){
Intent abreConversacion2=new Intent(this,Conversaciones.class);
abreConversacion2.putExtra("contactoNom", almacenaNombres[posicionInfo]);
abreConversacion2.putExtra("contactoNum", almacenaNumeros[posicionInfo]);
startActivity(abreConversacion2);
return true;
}
else if(item.getTitle()=="Eliminar conversación"){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirmación");
builder.setMessage("Está seguro de eliminar la conversación con " +
almacenaNombres[posicionInfo] + "?")
.setCancelable(false)
.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
BaseDeDatos administraM=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase elimina=administraM.getWritableDatabase();
elimina.execSQL("DELETE FROM conversaciones WHERE address='" + almacenaNombres
[posicionInfo] + "'");
elimina.close();
administraM.close();
BaseDeDatos administraM2=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase elimina2=administraM2.getWritableDatabase();
elimina2.execSQL("DELETE FROM recibidos WHERE address='" + almacenaNombres
[posicionInfo] + "'");
elimina2.close();
administraM2.close();
BaseDeDatos administraM3=new BaseDeDatos
(SMSManagerActivity.this,"administradorDeMensajes", null,5);
SQLiteDatabase elimina3=administraM3.getWritableDatabase();
elimina3.execSQL("DELETE FROM enviados WHERE address='" + almacenaNombres
[posicionInfo] + "'");
elimina3.close();
administraM3.close();
llenarList();
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
}
else
{
return false;
}
}
public void marcar(View view){
nuevo.setVisibility(8);
menu.setVisibility(8);
inhabilitar=false;
array= new Array(this,R.layout.main,datos);
mensajes.setAdapter(array);
}
public void eliminar(View view){
}
}