基础学习总结(六)--getContentRolver()的应用、内容监听者ContentObserver
2015-06-19 10:06
405 查看
ContentResolver / getContentResolver()
外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activity当中通过getContentResolver()可以得到当前应用的 ContentResolver实例。ContentResolver提供的接口和ContentProvider中需要实现的接口对应,具体可以查看API Doc,不过可以发现ContentResolver里面的方法很多都是final或者static的。在实际应用中,我们很少实现ContentResolver抽象类,更多时候通过getContentResolver()从一个Activity或其它应用程序组件的实现里获取一个ContentResolver:
短信的uri地址:"content:\\sms\"
View Code
外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activity当中通过getContentResolver()可以得到当前应用的 ContentResolver实例。ContentResolver提供的接口和ContentProvider中需要实现的接口对应,具体可以查看API Doc,不过可以发现ContentResolver里面的方法很多都是final或者static的。在实际应用中,我们很少实现ContentResolver抽象类,更多时候通过getContentResolver()从一个Activity或其它应用程序组件的实现里获取一个ContentResolver:
短信的uri地址:"content:\\sms\"
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 监听系统短信 ContentResolver resolver = getContentResolver(); // 注册一个内容观察者观察短信数据库 resolver.registerContentObserver(Uri.parse("content://sms/"), true, new MyContentObserver(new Handler())); } /** * 内容观察者 */ class MyContentObserver extends ContentObserver { private static final String TAG = "MyContentObserver"; public MyContentObserver(Handler handler) { super(handler); } /** * 当被监听的内容发生改变时回调 */ @Override public void onChange(boolean selfChange) { Log.i(TAG, "短信改变了"); Uri uri = Uri.parse("content://sms/outbox"); // 发件箱的uri // 查询发件箱的内容 Cursor cursor = getContentResolver().query(uri, new String[]{"address", "date", "body"}, null, null, null); if(cursor != null && cursor.getCount() > 0) { String address; long date; String body; while(cursor.moveToNext()) { address = cursor.getString(0); date = cursor.getLong(1); body = cursor.getString(2); Log.i(TAG, "号码: " + address + ", 日期: " + date + ", 内容: " + body); } cursor.close(); } } } }
View Code
相关文章推荐
- git命令
- 郭德纲语录
- BeanUtils
- 按分类 统计各分类下的记录数
- ScrollView中嵌套的viewPager,viepager高度设置为wrap_content时内容不显示问题以及与scrollview冲突的解决方案
- Theano2.1.15-基础知识之theano如何处理shapre信息
- Node.js学习--基础知识(9)--HTTP客户端
- ffmpeg学习笔记目录
- MobaSSH SSH server for Windows - Download Home Edition
- 脚本语言精粹
- Theano2.1.15-基础知识之theano如何处理shapre信息
- 杜月笙语录
- ProgressDialog中的Context注意事项
- Android Bundle类别
- c#语言实现对电脑文件夹的批量改名,选定改名
- 使用text-shadow实现文字特效
- Linux read系统调用
- linux常用命令
- 枚举
- JAVA堆与栈