1

我想使用 startActivityForResult 选择一个联系人,然后使用 onActivityResult 获取结果。

我已经按照Java android 如何使用联系人选择器中的示例进行操作。

此代码正确调用联系人选择器:

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>

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

詹姆士

4

1 回答 1

0

我发现了问题。上面的代码没有任何问题,但它在 TabActivity 中。我通过切换到选项卡片段解决了这个问题。

于 2013-02-04T19:00:59.897 回答