2014-11-23 116 views
1

我有一个android应用程序,在主线程中拍摄一张照片,并创建一个新线程,以便将此图像发送到服务器并接收响应。现在,我要保存在服务器中我的手机的联系人列表发送的信息,我试图用下面的代码来启动这个新线程的活动:从单独的线程开始活动?

private void addContact() { 

    Intent intent = new Intent(Intent.ACTION_INSERT); 
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 

    intent.putExtra(ContactsContract.Intents.Insert.NAME, DisplayName); 
    intent.putExtra(ContactsContract.Intents.Insert.PHONE, WorkNumber); 
    intent.putExtra(ContactsContract.Intents.Insert.EMAIL, emailID); 

    this.startActivity(intent); 

} 

但他是扔我错误: 系统服务不适用于活动的onCreate()之前

我觉得这个消息的是,因为在这个新的线程它没有任何onCreate()方法,那就是它抛出这个理由错误。

有人可以告诉我该怎么开始这项活动。

+0

有两个问题:(1)'this'关键字在最后一行是指什么? (2)你从什么线程调用addContact()方法? – 2014-11-23 04:32:52

+0

我不好。我从某处复制了代码并忘记删除此关键字。但我也尝试删除这一点。我犯了同样的错误。我从一个新的线程调用addContact而不是主线程 – Manpreet 2014-11-23 04:40:45

+0

尝试使用新的Handler.post添加联系人 – Nepster 2014-11-23 07:26:28

回答

1

而不是使用一个单独的Thread将数据发送到服务器,尝试使用AsyncTask

  1. 请在doInBackground()网络调用和返回的Bundle服务器响应或String[]阵列onPostExecute()

  2. onPostExecute()中,将服务器数据添加到意图,然后调用startActivity()

试试这个。它会工作。由于您在另一个线程上调用startActivity(),因此出现错误。您需要在主(UI)线程上调用它。

+0

谢谢。有效。 – Manpreet 2014-11-23 08:39:14

+0

非常欢迎...... :) – 2014-11-23 12:07:58