【问题标题】:Starts new activity after previous automatically在上一个活动之后自动开始新活动
【发布时间】:2013-06-19 19:48:39
【问题描述】:

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

当应用程序首次启动时,它会显示通话记录,然后监听传入和传出的短信。我有三个类: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
    }
}

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);
        }
    }

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以合并OutgoingSms.javaMainActivity.java。也可以在收到新短信时从IncomingSms 通知您的MainActivity。您可以在此处查看更多详细信息:

    how can I notify a running activity from a broadcast receiver?

    How can I send result data from Broadcast Receiver to Activity

    Android BroadcastReceiver Tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 2012-04-20
      相关资源
      最近更新 更多