当前位置:  编程技术>移动开发

Android实现获取未接来电和未读短信数量的方法

    来源: 互联网  发布时间:2014-10-26

    本文导语:  本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考。具体如下: 一、未读短信   首先注册Observer,当有新短信或彩信来的时候会调用 on...

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考。具体如下:

一、未读短信
 
首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理!

具体功能代码如下:

private ContentObserver newMmsContentObserver = new ContentObserver(new Handler()) { 
  public void onChange(boolean selfChange) { 
    int mNewSmsCount = getNewSmsCount() + getNewMmsCount(); 
  } 
}; 
private void registerObserver() { 
  unregisterObserver(); 
  getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, 
      newMmsContentObserver); 
  getContentResolver().registerContentObserver(MmsSms.CONTENT_URI, true, 
      newMmsContentObserver); 
} 
private synchronized void unregisterObserver() { 
  try { 
    if (newMmsContentObserver != null) { 
      getContentResolver().unregisterContentObserver(newMmsContentObserver); 
    } 
    if (newMmsContentObserver != null) { 
      getContentResolver().unregisterContentObserver(newMmsContentObserver); 
    } 
  } catch (Exception e) { 
    Log.e(TAG, "unregisterObserver fail"); 
  } 
} 

得到未读短信数量:

private int getNewSmsCount() { 
  int result = 0; 
  Cursor csr = getContentResolver().query(Uri.parse("content://sms"), null, 
      "type = 1 and read = 0", null, null); 
  if (csr != null) { 
    result = csr.getCount(); 
    csr.close(); 
  } 
  return result; 
} 

获取未读彩信数量:

private int getNewMmsCount() { 
  int result = 0; 
  Cursor csr = getContentResolver().query(Uri.parse("content://mms/inbox"), 
      null, "read = 0", null, null); 
  if (csr != null) { 
    result = csr.getCount(); 
    csr.close(); 
  } 
  return result; 
} 

二、未接来电

未接来电不能用 Observer监听,不过当有新的未接来电时,系统会发送一个广播com.android.phone.NotificationMgr.MissedCall_intent(锁屏上显示的未接来电数量就是通知监听这个广播实现的)

具体功能代码如下:

final IntentFilter filter = new IntentFilter(); 
filter.addAction("com.android.phone.NotificationMgr.MissedCall_intent"); 
final Application application = getApplication(); 
application.registerReceiver(new BroadcastReceiver() { 
  @Override 
  public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    if (action != null && "com.android.phone.NotificationMgr.MissedCall_intent".equals(action)) { 
      int mMissCallCount = intent.getExtras().getInt("MissedCallNumber"); 
    } 
  } 
}, filter); 

广播只是当有新的未接来电时才会发送,但是如果有旧的未接来电没有读取时,上面的广播就得不到数据了,那就必须得从数据库中查找了。

功能代码如下:

private int readMissCall() { 
  int result = 0; 
  Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[] { 
      Calls.TYPE 
    }, " type=? and new=?", new String[] { 
        Calls.MISSED_TYPE + "", "1" 
    }, "date desc"); 
 
  if (cursor != null) { 
    result = cursor.getCount(); 
    cursor.close(); 
  } 
  return result; 
} 

相信本文所述实例对于大家的Android程序开发能起到一点参考借鉴作用。


    
 
 

您可能感兴趣的文章:

  • android实现来电静音示例(监听来电)
  • android在root模式下接听来电的方法
  • Android实现判断手机未接来电及处理方法
  • android 电话状态监听(来电和去电)实现代码
  • Android获取本机电话号码的简单方法
  • android获取手机唯一标识的方法
  • android 如何获取MCC/MNC控制小区广播的开启
  • android当前apn的状态以及获取方法
  • Android手机获取root权限并实现关机重启功能的方法
  • Android获取手机SIM卡运营商信息的方法
  • 用Android Location获取当前地理位置的方法
  • Android取消EditText自动获取焦点默认行为
  • Android获取屏幕方向及键盘状态的小例子
  • android开发中获取手机分辨率大小的方法
  • android获取当前手机号示例程序
  • android开发教程之获取使用当前api的应用程序名称
  • 在Android中 获取正在运行的Service 实例
  • android连接wifi时获取广播地址代码
  • Android获取apk程序签名信息代码示例
  • Android开发之获取网络链接状态
  • android 获取屏幕像素大小的正确方法
  • Android获取应用程序名称(ApplicationName)示例
  • Android中Root权限获取的简单代码
  • android获取屏幕像素思路及代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android手机获取root权限并实现关机重启功能的方法 iis7站长之家
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3