day11

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值