1
다음 내용 관찰자와 함께 SMS 메시지를 관찰하려고합니다. 불행히도, 그것은 단지 몇 가지 사건을 선택합니다. 처음에는 라이프 사이클 이슈라고 생각 했으므로 중단, 시작, 재개 등의 방법을 사용하여 내 활동이 최전방에있는 동안 항상 관찰자를 관찰해야했습니다. 누구나 첫 번째 새 메시지 만 가져 오는 이유는 누구나 알 수 있습니까? 첫 번째 잡기가 끝나면 응용 프로그램을 다시 설치할 때까지 픽업을하지 않습니다.내용 관찰자가 한 번만 호출 된 후 다시는 실행되지 않습니다.
private void registerContentObservers() {
ContentResolver cr = getContentResolver();
mSmsObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
Log.v(TAG, "onChange method");
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
};
// cursor.registerContentObserver(mSmsObserver);
cr.registerContentObserver(Uri.parse("content://sms/inbox"), false, mSmsObserver);
}
private void unregisterContentObservers() {
ContentResolver cr = getContentResolver();
if (mSmsObserver != null) {
// just paranoia
cr.unregisterContentObserver(mSmsObserver);
mSmsObserver = null;
}
}
@Override
protected void onDestroy() {
Log.v(TAG, "onDestroy()");
unregisterContentObservers();
super.onDestroy();
}
@Override
protected void onStart() {
Log.v(TAG, "onStart()");
registerContentObservers();
super.onStart();
}
@Override
protected void onStop() {
Log.v(TAG, "onStop()");
unregisterContentObservers();
super.onStop();
}
@Override
protected void onResume() {
Log.v(TAG, "onResume()");
registerContentObservers();
super.onResume();
}
@Override
protected void onPause() {
Log.v(TAG, "onPause()");
super.onPause();
}