1

これは私のサービスファイルです:

public class SMSCounterService extends Service {
    /** Called when the activity is first created. */
    @Override
    public void onCreate() {
        Log.d(LOG_TAG, "SMSCounterService: Constructor");
        super.onCreate();
        dbActivities = new DBActivities(this);
        dbActivities.open();    // Create or open the existing DB if already created

        IntentFilter filter = new IntentFilter();
        filter.addAction("android.provider.Telephony.SMS_SENT");
        registerReceiver(receiver, filter);
    }

    @Override
    public void onDestroy() {
        unregisterReceiver(receiver);
        dbActivities.close();
        super.onDestroy();
    }

    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("android.provider.Telephony.SMS_SENT")) {
                smsCount++;
                Log.d(LOG_TAG, "SMSCounterService: smsCount=" +smsCount);
                long dbInsertReturn = dbActivities.insertIntoDB(smsCount);
            }
        }
    };

「SMSCounterService: Constructor」というログが表示されます。そのため、onCreate() メソッドが呼び出されます。しかし、SMS を送信すると、BroadcastReceiver はそれを識別できません。

4

2 に答える 2

0

私の知る限り、android.provider.Telephony.SMS_SENT のような意図はありません。Ice Cream Sandwich で「grep」を実行しましたが、見つかりませんでした。

ContentObserver アプローチを使用します。オブザーバーを登録して、更新メッセージング プロバイダーをリッスンします。(おそらく誰かがそれを受け入れることを知っている答えとしてそれを登録することにしました;))

于 2012-05-11T04:59:54.073 に答える
0

AndroidManifest.xmlに必要な権限を追加したことを確認してください

発送用:

<uses-permission android:name="android.permission.SEND_SMS" />

受け取る場合:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
于 2012-05-10T07:16:11.470 に答える