自动删除 Android 中的短信
Automatically delete sms in Android
这是我的代码,我正在尝试检索存储在我的数据库中的短信的日期,并将其传递到一个对象中以比较该日期是否在 30 天后过时,并有一条吐司消息它expires.Thanks提前求助
public class DataAging extends Activity implements Runnable {
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final long ONE_DAY = 24 * 60 * 60 * 1000;
public void onCreate(Bundle savedInstanceState) {
run();
}
public String date;
public long dbDate;
@Override
public void run() {
ArrayList<Message> smsInbox = new ArrayList<Message>();
String query_fetchSMS = "select * from " + Constants.table_sms + ";";
smsDB smsD = new smsDB(this);
SQLiteDatabase dbw = smsD.getWritableDatabase();
Cursor cursor = dbw.rawQuery(query_fetchSMS, null);
if (cursor != null) {
cursor.moveToLast();
if (cursor.getCount() > 0) {
do {
String time;
time = (cursor.getString(cursor
.getColumnIndex(Constants.columns_sms_date)));
SimpleDateFormat dateFormat = new SimpleDateFormat("hmmaa");
try {
Date date = dateFormat.parse(time);
Date now = new Date();
long diff = now.getTime() - date.getTime();
long days = diff / ONE_DAY;
if(days > 1) { // More than 30 days?
// Expired !!!
Toast.makeText(context,"EXPIRED NA", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
}
} while (cursor.moveToPrevious());
}
}
dbw.close();
smsD.close();
}
}
您可以根据日期过滤消息,同时从 sqliteDatabase 检索短信数据,而不是从数据库接收整个数据。
试试这个从 sqlite 数据库中获取超过 30 天的短信数据。
Calendar calendar= Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-30);
string oldMessageDate=formatter.format(calendar.getTime());
SQLiteDatabase dbw = smsD.getWritableDatabase();
Cursor cursor=dbw.query(Constants.table_sms,null,Constants.columns_sms_date+"<?", new String[]{oldMessageDate},null,null,null);
if(cursor!=null){
if(cursor.moveToFirst()){
do{
Toast.makeText(context,"EXPIRED NA", Toast.LENGTH_SHORT).show();
}while(cursor.moveToNext());
cursor.close();
}
}
这是我的代码,我正在尝试检索存储在我的数据库中的短信的日期,并将其传递到一个对象中以比较该日期是否在 30 天后过时,并有一条吐司消息它expires.Thanks提前求助
public class DataAging extends Activity implements Runnable {
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
private final long ONE_DAY = 24 * 60 * 60 * 1000;
public void onCreate(Bundle savedInstanceState) {
run();
}
public String date;
public long dbDate;
@Override
public void run() {
ArrayList<Message> smsInbox = new ArrayList<Message>();
String query_fetchSMS = "select * from " + Constants.table_sms + ";";
smsDB smsD = new smsDB(this);
SQLiteDatabase dbw = smsD.getWritableDatabase();
Cursor cursor = dbw.rawQuery(query_fetchSMS, null);
if (cursor != null) {
cursor.moveToLast();
if (cursor.getCount() > 0) {
do {
String time;
time = (cursor.getString(cursor
.getColumnIndex(Constants.columns_sms_date)));
SimpleDateFormat dateFormat = new SimpleDateFormat("hmmaa");
try {
Date date = dateFormat.parse(time);
Date now = new Date();
long diff = now.getTime() - date.getTime();
long days = diff / ONE_DAY;
if(days > 1) { // More than 30 days?
// Expired !!!
Toast.makeText(context,"EXPIRED NA", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
}
} while (cursor.moveToPrevious());
}
}
dbw.close();
smsD.close();
}
}
您可以根据日期过滤消息,同时从 sqliteDatabase 检索短信数据,而不是从数据库接收整个数据。
试试这个从 sqlite 数据库中获取超过 30 天的短信数据。
Calendar calendar= Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH,-30);
string oldMessageDate=formatter.format(calendar.getTime());
SQLiteDatabase dbw = smsD.getWritableDatabase();
Cursor cursor=dbw.query(Constants.table_sms,null,Constants.columns_sms_date+"<?", new String[]{oldMessageDate},null,null,null);
if(cursor!=null){
if(cursor.moveToFirst()){
do{
Toast.makeText(context,"EXPIRED NA", Toast.LENGTH_SHORT).show();
}while(cursor.moveToNext());
cursor.close();
}
}