Android ContentObserver监视未接电话,未读短信

ContentObserver有点类似于BroadcastReceiver,当某类事件发生时进行调用.ContentObserver一般和系统或第三方程序提供的Provider一起使用.

当为某个URI注册了ContentObserver后,对其进行操作后都会调用注册的回调函数,以监视未接电话为例(未读短信和未接电话类似,只需将URI改为短信的URI就可以了):

// 注册ContentObserver
getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, false, new MissedCallContentObserver(this,    

new Handler()));   

// 当有call log时,就会对这个类进行回调
public class MissedCallContentObserver extends ContentObserver {   

    private Context ctx;   

    private static final String TAG = "MissedCallContentObserver";   

    public MissedCallContentObserver(Context context, Handler handler) {
        super(handler);
        ctx = context;
    }   

    @Override
    public void onChange(boolean selfChange) {   

        Cursor csr = ctx.getContentResolver().query(Calls.CONTENT_URI, new String[] {Calls.NUMBER,    

Calls.TYPE, Calls.NEW}, null, null, Calls.DEFAULT_SORT_ORDER);   

        if (csr != null) {
            if (csr.moveToFirst()) {
                int type = csr.getInt(csr.getColumnIndex(Calls.TYPE));
                switch (type) {
                case Calls.MISSED_TYPE:
                    Log.v(TAG, "missed type");
                    if (csr.getInt(csr.getColumnIndex(Calls.NEW)) == 1) {
                        Log.v(TAG, "you have a missed call");
                    }
                    break;
                case Calls.INCOMING_TYPE:
                    Log.v(TAG, "incoming type");
                    break;
                case Calls.OUTGOING_TYPE:
                    Log.v(TAG, "outgoing type");
                    break;
                }
            }
            // release resource
            csr.close();
        }
    }   

    @Override
    public boolean deliverSelfNotifications() {
        return super.deliverSelfNotifications();
    }
}
时间: 2024-09-12 13:40:48

Android ContentObserver监视未接电话,未读短信的相关文章

Android锁屏未读短信,未接电话

由于锁屏在framework中,所以不需要添加相应的权限,如果是第三方app需要实现类似的功能,就必须声明权限.这也就是为什么Android手机的用户隐私很容易被泄漏的原因. 短信存放地方:/data/data/com.android.provider/telephony/databases/telphony.db 通话记录存放地方:/data/data/com.android.provider/telephony/databases/mmssms.db 未读短信数量获取方法: 由于短消息有短信

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

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考.具体如下: 一.未读短信  首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理! 具体功能代码如下: private ContentObserver newMmsContentObserver = new ContentObserver(new Ha

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

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考.具体如下: 一.未读短信   首先注册Observer,当有新短信或彩信来的时候会调用 onChange方法,我们可以在onChange方法中去获取未读短信和彩信,然后做一些UI上的处理! 具体功能代码如下: private ContentObserver newMmsContentObserver = new ContentObserver(new H

Galaxy S4如何设置未读短信重复提醒功能

1. 在待机页面下,点击[信息].     2. 点击手机左下角的[菜单]键,向上滑动屏幕,点击[设定].     3. 将[通知信息设置]中的[通知]进行勾选.     4. 点击[通知信息设置]中的[信息重复提示音].     5. 默认选项为[一次].     6. 选择一个重复时间,这里以[每2分钟]为例.     完成以上操作后,当有未读短信时,手机将每隔2分钟响起提示音.

Android Studio Intent隐式启动,发短信,拨号,打电话,访问网页等实例代码_Android

Android Studio Intent隐式启动,发短信,拨号,打电话,访问网页等实例代码 功能 创建5个按钮,隐式启动.发短信.拨号按钮.电话按钮.打开网页按钮.通过使用Intent来完成各自按钮下的功能 代码目录如下 详细代码如下: activity_main.xml代码如下 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sc

三星S5未读短信重复提醒如何设置?Galaxy S5短信重复提醒设置方法

1. 管理手机信息我们就必须进入到信息中,点击桌面的[信息].     2. 在信息界面我们按手机下方的[菜单]键,在弹出中点击[设定]菜单.     3. 然后我们再找到[通知信息设置]下面的[通知]把它选中,如下图所示.     4. 然后我们同样在[通知信息设置]下面再把[信息重复提示音]这一项也选中了.     5. 在弹出对话框中我们把默认选择为[一次]改成其它的.     6.如我选择过[每2分钟]重复一次提醒.     好了这样设置了,如果你短信未读过2分钟会提醒一次,直到你看了信

Android中简单的电话管理与短信管理App编写实例_Android

android电话管理器(TelephonyManger)实例:TelephonyManger是管理电话状态.网络信息的服务类. 添加权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 逻辑功能:

Android中简单的电话管理与短信管理App编写实例

android电话管理器(TelephonyManger)实例: TelephonyManger是管理电话状态.网络信息的服务类. 添加权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 逻辑功能:

IOS中调用系统拨打电话与发送短信

IOS中调用系统拨打电话发送短信 一.调用打电话界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",_phoneNumber]]]; 二.发送短消息界面 调用系统的发送短信的界面,需要引入以下头文件: #import <MessageUI/MessageUI.h> 系统短信界面的调用很简单,只需下面几句代码: ? 1