ContentProvider和BroadCastReceiver
ContentProvider
MyObserver
public class MyObserver extends ContentObserver {
private ContentResolver resolver;
private Uri uri;
private Context context;
private Handler handler;
/** * Creates a content observer. * * @param handler The handler to run {@link #onChange} on, or null if none. */
public MyObserver(Handler handler, Context context) {
super(handler);
this.handler=handler;
this.context=context;
resolver = context.getContentResolver();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
uri = Telephony.Sms.CONTENT_URI;
Cursor query = resolver.query(uri,new String[]{Telephony.Sms.ADDRESS,Telephony.Sms.BODY}, null, null, null, null);
if(query!=null){
query.moveToFirst();
String s = query.getString(query.getColumnIndex(Telephony.Sms.BODY));
Message message = handler.obtainMessage();
message.obj=s;
handler.sendMessage(message);
}
}
}
main
public class MainActivity extends AppCompatActivity {
private MyObserver observer;
private EditText ed;
private ContentResolver resolver;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String o = (String) msg.obj;
ed.setText(o);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(new String[]{Manifest.permission.READ_SMS},MODE_APPEND);
ed = findViewById(R.id.ed);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==MODE_APPEND){
observer= new MyObserver(handler, this);
resolver= getContentResolver();
resolver.registerContentObserver(Telephony.Sms.CONTENT_URI,true,observer);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
resolver.unregisterContentObserver(observer);
}
}
BroadCastReceiver
MyReceiver
public class MyReceiver extends BroadcastReceiver {
private static final String TAG = "MyReceiver";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals("aaa")){
String pig = intent.getStringExtra("pig");
Log.i(TAG, pig);
}
}
}
main
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// MyReceiver receiver = new MyReceiver();
// receiver.onReceive(this,this.getIntent());
}
public void click(View view) {
Intent intent = new Intent();
intent.setAction("aaa");
intent.putExtra("pig","猪跑咧");
sendBroadcast(intent);
}
}