발신 SMS 메시지를 듣고 싶습니다. 받아 들인 대답 here을 따르고 있었지만 작동하지 않습니다. 내가 어디로 잘못 가고 있는지 모르겠습니다. 나는 컨텐츠 참관인들에게 전혀 익숙하지 않아 내 무지를 용서한다.발신 SMS 수신 대기 안드로이드 수신
항상 서비스를 실행하여 항상 실행되도록하고 싶습니다. 이 서비스의 코드는 다음과 같습니다.
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
public class SmsOutgoingObserver extends Service {
public SmsOutgoingObserver() {
}
/* this method handles a single incoming request */
@Override
public int onStartCommand(Intent intent, int flags, int id) {
Log.d("OUTGOING", "RUNNING SERVICE");
return START_STICKY; // stay running
}
@Override
public IBinder onBind(Intent intent) {
return null; // disable binding
}
public class SmsObserver extends ContentObserver {
public SmsObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Uri uriSMSURI = Uri.parse("content://sms/out");
Cursor cr = SmsOutgoingObserver.this.getContentResolver().query(uriSMSURI, null, null, null, null);
cr.moveToNext();
String address = cur.getString(cr.getColumnIndex("body"));
Log.d("OUTGOING", address);
cr.close();
//Database.messageReceived(SmsOutgoingObserver.this, address);
}
}
}
내가 뭘 잘못하고 있니?
나는 그것을 실수가 아니라 그것을 내가 것이다 실현 삭제해야합니다 전에 거기에 있었다 그에게 한 샷을 준다. –
@SantiGallego : onCreate()에서이 코드를 사용하면 효과가있다. SMS는'ContentProvider'에 쓰여질 필요가 없으며, 많은 사용자들이 서비스를 지속적으로 실행하려고 시도 할 때 매우 짜증을 낼 수 있습니다. 구글은 또한 이런 종류의 서비스가 미래에 제거 될 수 있음을 암시했다. 안드로이드 7.0+에서는'JobScheduler'를 사용하여 서비스를 계속 실행하지 않고도'ContentProvider'를 모니터링 할 수 있습니다 - [this sample app] (https://github.com/commonsguy/cw-omnibus/tree/)를 참조하십시오. master/JobScheduler). – CommonsWare