Android学习篇章39-ContentProvider-获取短信数据
来源:互联网 发布:vmware esx 网络名 编辑:程序博客网 时间:2024/06/03 18:49
Mainactivity:
public class MainActivity extends Activity {SmsObservor smswatch=null;//Handler 在Android中主要是负责子线程与主线程间消息传递//Handler一般是在主线程中定义 子线程中使用Handler往主线程发送消息,同时UI变更Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==0x101){ Cursor c=MainActivity.this.getContentResolver().query(Uri.parse("content://sms"), null, null,null, null); if(c!=null&&c.moveToFirst()) { String[] cols= c.getColumnNames(); for(String str:cols) { Log.i("test", "name="+str); } String phone=c.getString(c.getColumnIndex("address")); String subject=c.getString(c.getColumnIndex("subject")); String body=c.getString(c.getColumnIndex("body")); Log.i("test", "phone="+phone+" subject="+subject+" body="+body); } if(c!=null) c.close();}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void clickBtn(View view){int id=view.getId();if(id==R.id.btn1){//注册短信数据库的观察者smswatch=new SmsObservor(handler);//uri是watch所监视的数据库地址 this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smswatch);}else{if(smswatch!=null) this.getContentResolver().unregisterContentObserver(smswatch);}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
public class SmsObservor extends ContentObserver {Handler handler=null;public SmsObservor(Handler handler) {super(handler);this.handler=handler;}@SuppressLint("NewApi")@Overridepublic void onChange(boolean selfChange, Uri uri) {handler.sendEmptyMessage(0x101);Log.i("test", "短信数据库发生改变 uri="+uri);}@Overridepublic void onChange(boolean selfChange) {onChange(selfChange,null);}}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="clickBtn" android:text="开启短信监控" /> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="clickBtn" android:text="关闭短信监控" /> </LinearLayout>
- Android学习篇章39-ContentProvider-获取短信数据
- Android学习篇章38-ContentProvider-获取联系人信息
- Android学习篇章36-ContentProvider
- Android学习篇章37-ContentProvider-ContentResolver
- Android:ContentProvider获取短信的信息
- Android学习篇章31-Broadcast广播基础-短信监听
- Android学习篇章57-广播BroadcastReceiver短信监听
- android数据存储ContentProvider数据获取ContentResolver
- Android入门学习篇章
- Android学习篇章53-SensorManage 获取传感器列表
- Android学习篇章25-Intentc传输数据Bundle-Parcelable-Serializable
- android学习:使用它ContentProvider获取其他程序共享的数据
- android学习 -- ContentProvider实现数据共享
- Android学习篇章1-MyView
- Android学习篇章4-MyButton
- Android学习篇章11-VelocityTracker
- Android学习篇章21-Sharedprefrence
- Android学习篇章63-FragmentActivity
- 内核编译 make menuconfig错误
- 排序 -- 堆排序
- c# 将DataGridViewRows转换为DataTable数据
- 好喜欢这位长腿美女,大家肿么看?
- 网络技术书籍推荐
- Android学习篇章39-ContentProvider-获取短信数据
- 正则表达式
- 深刻理解dp、px——代码布局使图片物理尺寸看上去一样大 vs 使图片占屏幕比例一样大
- 07-DIV+CSS-选择器深入-通配符选择器-父子选择器-选择器分组
- 黑马程序员:异常类的介绍及应用
- 基于Darwin实现的分布式流媒体直播服务器系统
- 深入浅出之正则表达式(一)
- C/C++中指针数组、数组指针、指针函数、函数指针的比较
- SEO 最佳隐藏文本的办法