2013-01-31 74 views
1

我想使用startActivityForResult選擇聯繫人,然後使用onActivityResult獲取結果。android聯繫人選擇器onActivityResult

我遵循Java android how to use contact picker中的示例。

此代碼調用正確的聯繫人選擇器:

addButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

      Log.d(this.getClass().getName(), "Add button"); 

      startActivityForResult(intent, PICK); 
     } 
    }); 

然而onActivityResult永遠不會被調用:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    Log.d(this.getClass().getName(), "onActivityResult"); 

    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK && resultCode == Activity.RESULT_OK) 
    { 
    Uri contactData = data.getData(); 
    Cursor c = managedQuery(contactData, null, null, null, null); 

     if (c.moveToFirst()) 
     { 
     String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

      Log.d(this.getClass().getName(), "Selected "+name); 
     } 
    } 

} // onActivityResult 

我不知道是否可能與我的AndroidManifest.xml中的一個問題。我有READ_CONTACTS權限;我搜索了一下,並將這個意圖過濾器添加到啓動並等待活動的活動中,但這也沒有任何區別。

<intent-filter> 
      <action android:name="android.intent.action.PICK"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <data android:scheme="content" android:path="contacts"></data> 
</intent-filter> 

在手機上的行爲是按下按鈕時,顯示的聯繫人列表,但是當我拿起一個條目,它從來沒有控制權給我的應用程序。

James

回答

0

我發現了這個問題。上面的代碼沒有錯,但它在TabActivity中。我通過切換到Tab Fragments修復了問題。

相關問題