Android 문자 인증 코드 자동 충전 기능
1.ContentObserver 개발
주로 수신 함 내용 을 감청 하 는 데 쓰 인 다.새로운 소식 이 오 면 내 가 원 하 는 번호 로 보 낸 문자 인지 감청 하고,그렇다면 정규 표현 식 으로 직접 캡 처 한다.
/**
*
*
* @author yangfan
*
*/
public class SMSContentObserver extends ContentObserver
{
private Context mContext; //
private Handler mHandler; // UI
private String code; //
public SMSContentObserver(Context context, Handler handler)
{
super(handler);
mContext = context;
mHandler = handler;
}
/**
* , Uri ,
*
*
*
* @param selfChange
* false
*/
@Override
public void onChange(boolean selfChange, Uri uri)
{
Log.e("XXXXXXXXXXXXXXXX", uri.toString());
//
if (uri.toString().equals("content://sms/raw"))
{
return;
}
//
Uri inboxUri = Uri.parse("content://sms/inbox");
//
Cursor c = mContext.getContentResolver().query(inboxUri, null, null,
null, "date desc");
if (c != null)
{
if (c.moveToFirst())
{
//
String address = c.getString(c.getColumnIndex("address"));
//
String body = c.getString(c.getColumnIndex("body"));
//
if (!address.equals(" "))
{
return;
}
// 6
Pattern pattern = Pattern.compile("(\\d{6})");
Matcher matcher = pattern.matcher(body);
// Handler
if (matcher.find())
{
code = matcher.group(0);
mHandler.obtainMessage(1, code).sendToTarget();
}
}
}
c.close();
}
}
2.레이아웃 과 Activity
<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:padding="50dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" :" />
<EditText
android:id="@+id/smsCode"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
public class MainActivity extends ActionBarActivity
{
private EditText code;
@SuppressLint("HandlerLeak")
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what == 1)
{
code.setText(msg.obj.toString());
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
code = (EditText) findViewById(R.id.smsCode);
SMSContentObserver smsContentObserver = new SMSContentObserver(
MainActivity.this, handler);
MainActivity.this.getContentResolver().registerContentObserver(
Uri.parse("content://sms/"), true, smsContentObserver);
}
}
3.권한 을 부여 하 는 것 을 잊 지 마 세 요.4.테스트 실행
본인 은 핸드폰 두 개 를 가지 고 테스트 를 했 어 요.
문자 인증 코드 자동 가 져 오기.png
코드 주소:https://github.com/yungfan/SMSSMSContentObserver
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.