【问题标题】:Automatically delete sms in AndroidAndroid中自动删除短信
【发布时间】:2016-01-19 04:39:18
【问题描述】:

这是我的代码,我正在尝试检索我存储在数据库中的短信的日期,并将其传递到一个对象中以比较该日期是否在 30 天后过期并有一条提示消息过期.在此先感谢您的帮助

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();
  }       
 }

【问题讨论】:

标签: java android sms


【解决方案1】:

您可以在从 sqliteDatabase 检索短信数据时根据日期过滤消息,而不是从数据库中接收整个数据。

试试这个从 sqlitedatabase 只获取超过 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();
 }
}

【讨论】:

  • dateFormat 表示无法解析。对此有何行动?谢谢@Vishwa
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多