我想使用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>
手机上的行为是,当按下按钮时,会显示联系人列表,但是当我选择一个条目时,它永远不会将控制权交还给我的应用程序。
詹姆斯
答案 0 :(得分:0)
我发现了问题。上面的代码没有任何问题,但它在TabActivity中。我通过切换到Tab Fragments修复了这个问题。