これに関連するSOに関するいくつかの質問があることを私は知っていますが、それらのどれも私がこれを機能させるのを助けませんでした-送信されているSMSをキャプチャします。私はSamsungの携帯電話でAndroid2.2(FROYO)を使用しています(それがどういうわけか重要な場合)。
Stackoverflowでこれをたくさん検索しContentObserver、リクエストが必要であることに気づきました。アクティビティの代わりにサービスを使用しているのでContentObserver、Serviceクラスに登録しました。次のようになります。
public class SMSSending extends Service {
private class MyContentObserver extends ContentObserver {
public MyContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Uri uriSMSURI = Uri.parse("content://sms/sent");
Cursor cur = getBaseContext().getContentResolver().query(uriSMSURI, null, null, null, null);
cur.moveToNext();
String content = cur.getString(cur.getColumnIndex("body"));
Toast.makeText(getApplicationContext(), "SOME TEXT", Toast.LENGTH_LONG).show();
}
@Override
public boolean deliverSelfNotifications() {
return false;
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
MyContentObserver contentObserver = new MyContentObserver();
ContentResolver contentResolver = getBaseContext().getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms/sent"),true, contentObserver);
Toast.makeText(getApplicationContext(), "SERVICE CREATED", Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(getApplicationContext(), "SERVICE STARTED", Toast.LENGTH_LONG).show();
}
}
ご覧のとおり、私Toastはいくつかの場所に配置したので、これがまったく機能しているかどうかを確認できました。残念ながら、この通知は表示されません。また、LogCatのコードを入れてみましたが、何も起こりません。私もUri uriSMSURI = Uri.parse("content://sms");代わりに入れようとしましcontent://sms/sent
たが、アプリケーションは単に何もしません。もちろん、私はマニフェストで許可を持っています:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
私は何が欠けていますか?