android联系人选择器onActivityResult

时间:2013-01-31 20:48:36

标签: android android-activity contacts

我想使用startActivityForResult选择联系人,然后使用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权限;我用Google搜索并将此intent-filter添加到启动的活动中并等待活动,但这也没有任何区别。

<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>

手机上的行为是,当按下按钮时,会显示联系人列表,但是当我选择一个条目时,它永远不会将控制权交还给我的应用程序。

詹姆斯

1 个答案:

答案 0 :(得分:0)

我发现了问题。上面的代码没有任何问题,但它在TabActivity中。我通过切换到Tab Fragments修复了这个问题。