0

こんにちは!通話履歴、着信 SMS、および発信 SMS を読み取るアプリケーションがあります。

アプリケーションが最初に起動されると、通話ログが表示され、着信および発信 SMS がリッスンされます。メイン アクティビティ、IncomingSms.Java、outgoingSms.java の 3 つのクラスがあります。

メイン アクティビティは正常に開始され、すべて正常に表示されますが、着信および発信 SMS 機能はトリガーされません。私の着信および発信 SMS クラスは 100% 正しく、新しいプロジェクトとして作成して実行すると正常に動作しますが、それらは連携しません。

私が望むのは、これらすべてのプロセスを同時にトリガーすることだけです。これが私のコードです。

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getCallDetails();
    }

    @SuppressWarnings("deprecation")
    private void getCallDetails() {

        //rest of code here


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

私の IncmingSms.java

public class IncomingSms extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        final Bundle bundle = intent.getExtras();
        final SmsManager sms = SmsManager.getDefault();
        // REST OF CODE HERE
    }
}

OutgoingSms.java

public class OutgoingSms extends Activity {
    final SmsManager sms = SmsManager.getDefault();

    ContentResolver contentResolver;
    ContentObserver smsContentObserver;

    @Override
    public void onResume() {
        super.onResume();
        smsContentObserver = new ContentObserver(new Handler()) {

            @Override
            public void onChange(boolean selfChange) {
                Uri smsURI = Uri.parse("content://sms/sent");
                Cursor c = getContentResolver().query(smsURI, new String[] {
                    "address", "date", "body", "type"
                }, null, null, null);
                String[] columns = new String[] {
                    "address", "date", "body", "type"
                };
                c.moveToNext();
                Rest of Code here@ Override
                public boolean deliverSelfNotifications() {
                    return true;
                }
            };

            contentResolver.registerContentObserver(Uri.parse("content://sms"), true, smsContentObserver);

        }

        @Override
        public void onDestroy() {
            super.onDestroy();
            contentResolver.unregisterContentObserver(smsContentObserver);
        }
    }
4

1 に答える 1

0

OutgoingSms.javaとをマージできます。また、新しい SMS を受信したときに送信者にMainActivity.java通知することもできます。詳細については、次を参照してください。MainActivityIncomingSms

ブロードキャスト レシーバーから実行中のアクティビティを通知するにはどうすればよいですか?

Broadcast Receiver から Activity に結果データを送信するにはどうすればよいですか

Android BroadcastReceiver チュートリアル

于 2013-06-22T23:32:45.517 に答える