2014-11-23 118 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