我有一个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)
不要使用单独的Thread
将数据发送到服务器,请尝试使用AsyncTask
:
在doInBackground()
进行网络通话,并将Bundle
或String[]
阵列中的服务器响应返回至onPostExecute()
。
在onPostExecute()
中,将服务器数据添加到意图中,然后调用startActivity()
。
试试这个。它会工作。您收到错误是因为您在另一个线程上调用了startActivity()
。您需要在主(UI)线程上调用它。