首页 > 程序开发 > 移动开发 > 其他 >

安卓ContentObserver实现验证码自动补全

2017-02-17

安卓ContentObserver实现验证码自动补全:希望下面的文章对大家有所帮助。

安卓ContentObserver实现验证码自动补全:希望下面的文章对大家有所帮助。
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.tv_main_number);
        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                Bundle bundle=msg.getData();
                textView.setText(bundle.getString("number"));

            }
        };
        this.getContentResolver().registerContentObserver(Uri.parse("content://sms"),true,new MyObserver(handler));
    }

    class MyObserver extends ContentObserver{

        public MyObserver(Handler handler) {
            super(handler);

        }
        @Override
        public void onChange(boolean selfChange) {
                                                                           //将查出来的数据降序,确保取道的是最新的信息
            Cursor cursor=MainActivity.this.getContentResolver().query(Uri.parse("content://sms/inbox"),null,null,null,"date desc");

            if(cursor!=null) {
               if (cursor.moveToNext()) {                                                                   //这里就是判断短信里是否有验证码三个字和一个英文的冒号
                   if (cursor.getString(cursor.getColumnIndex("address")).equals("+86指定的号码") && cursor.getString(cursor.getColumnIndex("body")).contains("验证码")) {
                       String date = cursor.getString(cursor.getColumnIndex("body"));
                       int star = date.indexOf(":");
                       String data = date.substring(star + 1, star + 5);
                       Message ms = new Message();
                       Bundle bundle = new Bundle();
                       bundle.putString("number", data);
                       ms.setData(bundle);
                       handler.sendMessage(ms);
                   }
               }

           }
        }
    }


}
相关文章
最新文章
热点推荐