App监听短信广播和电话监听录音,电量及流量,挂断电话

演示如何挂断电话和清理手机缓存- https://github.com/liaozhoubei/EndCallAndClearCacheDemo

> 获取电池电量及自定义电池电量
Android显示电量-自定义电池View- http://blog.csdn.net/feifei454498130/article/details/13282317
获取Android设备电池电量状态- http://blog.csdn.net/androidwuyou/article/details/52573707

> 获取手机流量或Wifi流量
android 流量的统计- http://blog.csdn.net/zhenwenxian/article/details/25754231
Android 统计Wifi/2G/3G/4G流量- http://www.2cto.com/kf/201406/307777.html
Android基于TrafficStats实现实时流量统计- http://blog.csdn.net/yeluoruoyin/article/details/46552423

> 监听电话和短信
android广播和短信广播详解----使用广播接收者窃听短信-- http://blog.csdn.net/junjieking/article/details/6867594
Android 监听短信(同时监听广播和数据库)-- http://www.cnblogs.com/zyw-205520/p/4764177.html
android服务Service----实现电话监听录音-- http://blog.csdn.net/junjieking/article/details/6868044
Android查询短信数据库:http://blog.csdn.net/junjieking/article/details/6936306
Android电话监听与短信监听- http://blog.csdn.net/hp910315/article/details/50060101
Android开发之监听或获取手机短信内容- http://blog.csdn.net/mad1989/article/details/22426415/

-- ContentProvider/CursorAdapter-->Uri. 触发器分为表触发器、行触发器, 相应地ContentObserver也分  
为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。熟悉Content Provider(内容提供者)的应该知道
,我们可以通过UriMatcher类注册不同类型的Uri,我们可以通过这些不同的 Uri来查询不同的结果。根据Uri返回的结果,Uri Type可以分为:返回多
条数据的Uri、返回单条数据的Uri。

-- 总结:使用ContentObserver的情况主要有一下两者情况: 
1、需要频繁检测的数据库或者某个数据是否发生改变,如果使用线程去操作,很不经济而且很耗时 ; 
2、在用户不知晓的情况下对数据库做一些事件,比如:悄悄发送信息、拒绝接受短信黑名单等;
  在这两种情形下,使用ContentObserver无疑是最好的利刃了。

这样适用于具体的url 监听,数据变动之后动态的通知页面的调整和相应的动作。
关于Android中使用Uri监听数据库的变化- http://blog.csdn.net/a497393102/article/details/44223219
当监听类有数据更新时下拉刷新(OnScrollListener的实现和ContentProvider监听数据的变化)--
http://blog.csdn.net/zhaoyazhi2129/article/details/30064965?utm_source=tuicool&utm_medium=referral

AdapterView与Adapter(三) --Cursor及CursorAdapter数据变化监听- http://blog.csdn.net/yan8024/article/details/46907399
android CursorAdapter的监听事件- http://www.cnblogs.com/ufocdy/archive/2011/03/17/1987327.html
//contentObserver只是通知数据库中内容变化了
  cursor.registerContentObserver(mChangeObserver);
//datasetObserver是调用requery之后通知上层cursor数据内容已经更新
  cursor.registerDataSetObserver(mDataSetObserver);

--  在小米等一些机型,无法接收系统发出的短信广播。只能通过观察者ContentObserver,去监听短信数据的变化.
 notifyDataSetChanged和notifyDataSetInvalidated的区别:
 1.notifyDataSetInvalidated(),会重绘整个控件(还原到初始状态)
 2.notifyDataSetChanged(),重绘当前可见区域

 content://sms/inbox 收件箱 
 content://sms/sent 已发送 
 content://sms/draft 草稿 
 content://sms/outbox 发件箱 
 content://sms/failed 发送失败 
 content://sms/queued 待发送列表

// 注册数据库的监听,对应的是特定的Uri  
  getContentResolver().registerContentObserver(MyDataProvider.CONTENT_URI, true, mDatabaseListener);  
// 注销掉监听  
  getContentResolver().unregisterContentObserver(mDatabaseListener);

public class SMSContentObserver extends ContentObserver {
    private Context mContext;
    String[] projection = new String[] { "address", "body", "date", "type", "read" };
 
    public SMSContentObserver(Context context, Handler handler) {
        super(handler);
        mContext = context;
    }
 
    @Override
    public void onChange(boolean selfChange) {
        Uri uri = Uri.parse("content://sms/inbox");
        Cursor c = mContext.getContentResolver().query(uri, null, null, null, "date desc");
        if (c != null) {
            while (c.moveToNext()) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                Date d = new Date(c.getLong(c.getColumnIndex("date")));
                String date = dateFormat.format(d);
                StringBuilder sb = new StringBuilder();
                sb.append("发件人手机号码: " + c.getString(c.getColumnIndex("address")))
                        .append("信息内容: " + c.getString(c.getColumnIndex("body")))
                        .append(" 是否查看: " + c.getInt(c.getColumnIndex("read")))
                        .append(" 类型: " + c.getInt(c.getColumnIndex("type"))).append(date);
                Log.i("xxx", sb.toString());
            }
            c.close();
        }
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值