0

你好!我有一个读取通话记录、传入短信和传出短信的应用程序。

当应用程序首次启动时,它会显示通话记录,然后监听传入和传出的短信。我有三个类:Main Activity、IncomingSms.Java 和outingSms.java。

主要活动正常启动并显示一切正常,但未触发传入和传出短信功能。我的传入和传出 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
    }
}

外发短信.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和.Also 您可以在收到新短信时MainActivity.java通知您。您可以在此处查看更多详细信息:MainActivityIncomingSms

如何从广播接收器通知正在运行的活动?

如何将结果数据从广播接收器发送到活动

Android BroadcastReceiver 教程

于 2013-06-22T23:32:45.517 回答