`

Android 短信列表的时间显示

 
阅读更多

转自: http://www.cnblogs.com/flyme/archive/2011/06/30/2094415.html

 

Android 中短信的时间的显示做的很精细。首先,保存在短信数据库 mmssms.db 中的短信时间都是 Long 型的数字。当查询动作结束时,取到这个值之后,会做转换,具体转换的动作在MessageUtils.java的formatTimeStampString函数中完成。

public static String formatTimeStampString(Context context, long when) {
        return formatTimeStampString(context, when, false);
    }

 

public static String formatTimeStampString(Context context, long when, boolean fullFormat) {
        Time then = new Time();
        then.set(when);
        Time now = new Time();
        now.setToNow();

        // Basic settings for formatDateTime() we want for all cases.
        int format_flags = DateUtils.FORMAT_NO_NOON_MIDNIGHT |
                           DateUtils.FORMAT_ABBREV_ALL |
                           DateUtils.FORMAT_CAP_AMPM;

        // If the message is from a different year, show the date and year.
        if (then.year != now.year) {
            format_flags |= DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE;
        } else if (then.yearDay != now.yearDay) {
            // If it is from a different day than today, show only the date.
            format_flags |= DateUtils.FORMAT_SHOW_DATE;
        } else {
            // Otherwise, if the message is from today, show the time.
            format_flags |= DateUtils.FORMAT_SHOW_TIME;
        }

        // If the caller has asked for full details, make sure to show the date
        // and time no matter what we've determined above (but still make showing
        // the year only happen if it is a different year from today).
        if (fullFormat) {
            format_flags |= (DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME);
        }

        return DateUtils.formatDateTime(context, when, format_flags);
    }

 

从第二个具体实现的函数可以看出来,Android是根据当前的时间为比较的依据来决定显示的时间格式:

        1. 如果当前的短信时间中年份跟手机当前的年份不一致,则显示年月日,不显示具体的几点几分,如:2010-6-30

        2. 如果短信的时间跟手机当前时间在同一年,但不是同一天,则只显示月日,如:6月29日

        3.如果是当天的短信,则会计算是上午还是下午的短信,同时显示几点几分记录的该短信,如:下午 12:55

分享到:
评论

相关推荐

    Android编程之短信列表的时间显示实例分析

    本文将深入分析Android短信列表中时间显示的实现原理,并提供实例代码供参考。 首先,短信列表中的时间数据通常存储在SQLite数据库中,以Long型数值表示,这个数值代表的是自1970年1月1日00:00:00以来的毫秒数。在...

    Android 短信 UI 工程文件

    本文将深入探讨“Android短信UI工程文件”所涵盖的关键知识点,包括UI设计原则、布局管理器、控件使用以及Android的Intent机制。 首先,Android UI设计遵循Material Design指南,这是一种统一的视觉语言,旨在提供...

    Android: 开发短信程序列表界面(QuickContactBadge/ListView混用)

    在短信应用的列表界面中,每个`ListView` 的项通常包含一条短信的信息,如发送者、时间、内容等。通过适配器(Adapter)将数据绑定到`ListView`,可以实现动态加载和滚动效果,使得用户能够流畅地查看和管理消息。 ...

    Android版短信 筛选/批量删除 程序(支持Android2.3~ 4.4)

    可以使用XML布局文件来定义界面元素,如ListView用于显示短信列表,CheckBox用于批量选择,EditText用于输入筛选条件。 5. **BroadcastReceiver**:为了实时更新短信列表,可以注册一个BroadcastReceiver监听`...

    android实战 查看短信的猫(android studio源程序工程)

    在这个项目中,可能有一个XML文件用于创建列表视图,其中包含短信条目的各个字段,如发件人、接收时间、短信内容等。 4. **Intent**:Intent在Android中用于启动其他组件或传递数据。在这个应用中,可能使用Intent...

    Android_实战_短信收发

    在`onReceive()`方法中,我们可以解析Intent,获取短信的相关信息,如发送者、时间、内容等。同时,为了防止恶意程序滥用,Android系统会对接收到的短信进行一定的限制,因此在处理短信时需要格外小心。 广播的使用...

    android短信软件

    在Android系统中,短信服务是核心功能之...在开发过程中,可以参考SMSProject压缩包内的示例代码,它包含了完整的短信拦截和延迟发送功能的实现,通过学习和理解这些代码,你可以更好地掌握Android短信服务的开发技巧。

    Android-Android中最漂亮的短信App

    【Android-打造最美观的短信应用】 在Android平台上,创建一款引人注目的、用户体验优秀的短信应用程序是一项挑战,但也是创新的机会。"Android中最漂亮的短信App"这一标题暗示了我们正在探讨一个注重设计美学和...

    Android拦截接收短信

    在实际应用中,可能还需要根据这些信息进行各种操作,比如存储短信到数据库、显示通知或者像示例中那样转发短信。注意,由于Android权限管理,从Android 6.0(API级别23)开始,需要在运行时请求`READ_SMS`和`WRITE_...

    android短信电话防火墙

    本文将详细解析"android短信电话防火墙"这一主题,涵盖其核心功能、实现原理以及如何有效利用。 一、核心功能 1. **来电拦截**:防火墙可以根据预设的规则拦截特定号码的来电,比如黑名单中的联系人或者未知号码。...

    【Android】短信应用——短信(会话)实时删除

    `sms` 表存储单条短信信息,包括短信内容、发送者/接收者、时间等信息;`thread` 表则记录了短信会话,它通过`thread_id`字段关联`sms`表,使得我们能够按照会话来查询和操作短信。 为了实现短信实时删除,我们需要...

    Android高级应用源码-android模拟短信插入和接收.zip

    8. **线程管理**: 由于BroadcastReceiver在主线程中运行,处理短信接收时,需要确保长时间运行的操作(如网络请求)不会阻塞UI线程。可以使用Handler、AsyncTask或者新的Android JobScheduler来处理后台任务。 9. *...

    【Android】短信应用——短信(会话)删除

    这可能涉及到对`thread_id`字段的检查,该字段在Android短信数据库中表示短信会话。 3. **删除会话**:确定了要删除的会话后,我们需要执行删除操作。这可以通过ContentResolver的`delete()`方法完成,传入要删除的...

    Android 短信拦截器

    在Android系统中,短信拦截器是一种机制,允许开发者在...以上就是关于Android短信拦截器的一些关键知识点,涵盖了实现原理、代码实现、权限管理以及测试方法。理解并掌握这些内容,你就可以创建自己的短信拦截应用了。

    android时间定时器,短信验证,定时刷新

    总结来说,Android开发中,结合使用时间定时器和Handler可以方便地实现定时任务,比如定时刷新界面或定时验证短信。这种技术在很多应用场景中都是必不可少的,比如实时数据显示、自动刷新数据等。通过熟练掌握和应用...

    android 短信和电话拦截

    在这里,你可以检查短信的内容和发件人,根据预定义的规则决定是否阻止短信的显示或进一步处理。需要注意的是,如果在`onReceive()`中长时间执行操作,可能会导致其他短信接收延迟或丢失,因此应尽快处理并返回。 ...

    Android 短信验证倒计时控件

    本文将详细介绍如何创建并使用一个自定义的"Android短信验证倒计时控件",以及如何进行集成。 一、倒计时控件原理 倒计时控件的核心思想是使用Handler和Runnable来实现定时更新界面的效果。Handler是用来发送和处理...

    android短信验证码

    总结来说,实现Android短信验证码功能涉及的关键知识点包括:网络请求API的调用、XML布局设计、事件监听、计时器、数据验证以及异常处理。通过这些技术,我们可以构建出一个安全、用户友好的验证系统。

    Android短信倒计时Demo

    2. 在`onTick()`方法中更新UI,显示剩余的倒计时时间。可以将`millisUntilFinished`转换为分钟和秒,然后更新TextView或其他UI组件的文本。 3. 当倒计时结束(`onFinish()`被调用)时,可以提示用户短信已发送,或者...

    android短信跨平台管理软件

    本文将深入探讨“Android短信跨平台管理软件”的相关知识点,包括短信的获取、传输以及在不同平台上的查询功能。 首先,我们需要了解的是“搜集手机端短信”这一模块。在Android系统中,短信数据存储在SQLite数据库...

Global site tag (gtag.js) - Google Analytics