我想聽聽傳出的短信。我按照公認的答案here但它不工作。我不知道我要去哪裏錯。我對內容觀察者一點都不熟悉,所以請原諒我的無知。聽外面的短信不工作android
我想在服務中創建它,所以它會一直運行。這裏是我的服務代碼:
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()'中的代碼應該工作。請注意,短信不必寫入該「ContentProvider」,許多用戶可能會因爲試圖讓服務連續運行而感到非常煩惱。 Google也暗示將來可能會取消這種服務。在Android 7.0+上,您可以使用'JobScheduler'來監視ContentProvider,而不必持續運行服務 - 請參閱[示例應用程序](https://github.com/commonsguy/cw-omnibus/tree/) master/JobScheduler)來監控'ContactsContract'。 – CommonsWare