接收短信是,内容观察着观察短信的地址和内容
<uses-permission android:name="android.permission.READ_SMS"/>
package org.gentry.observer;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://sms/");
resolver.registerContentObserver(uri, true, new MyObserver(
new Handler()));
}
private class MyObserver extends ContentObserver {
public MyObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
/**
* 当内容观察者观察到数据库的内容变化了时调用这个方法(观察到消息邮箱里面有一条数据库内容变化的通知)
*/
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Toast.makeText(MainActivity.this, "数据库的内容变化了", Toast.LENGTH_SHORT)
.show();
Uri uri = Uri.parse("content://sms/");
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, new String[] { "address",
"date", "type", "body" }, null, null, null);
cursor.moveToFirst();
String address = cursor.getString(0);
String body = cursor.getString(3);
System.out.println(address + "----" + body);
cursor.close();
}
}
}