Android 如何从主屏幕呼叫联系人选择器?

Android 如何从主屏幕呼叫联系人选择器?,android,homescreen,contactpicker,Android,Homescreen,Contactpicker,我正在尝试创建一个定制的Android主屏幕。我使用了示例主屏幕应用程序,并对其进行了调整。我想做的是,从主屏幕中的按钮打开联系人选择器,并使用用户在下一个操作中选择的联系人。我无意中发现了本书中提到的同一个问题 如何解决这个问题,使主屏幕保持“singleInstance”,并且我还可以调用startActivityForResult() 联系人选取器是一项活动,我可以将其子类化(我已经搜索过,但找不到任何子类),以便使用David Wasser在上述问题中提出的解决方案吗?毕竟,我找到了一个

我正在尝试创建一个定制的Android主屏幕。我使用了示例主屏幕应用程序,并对其进行了调整。我想做的是,从主屏幕中的按钮打开联系人选择器,并使用用户在下一个操作中选择的联系人。我无意中发现了本书中提到的同一个问题

如何解决这个问题,使主屏幕保持“singleInstance”,并且我还可以调用startActivityForResult()


联系人选取器是一项活动,我可以将其子类化(我已经搜索过,但找不到任何子类),以便使用David Wasser在上述问题中提出的解决方案吗?

毕竟,我找到了一个优雅的解决方案:

“我的主要活动”启动一个中间的、不可见的活动,该活动具有
android:theme=“@android:style/theme.NoDisplay”

此中间活动在其
onCreate

Intent phoneContactIntent = new Intent(Intent.ACTION_PICK, 
    ContactsContract.Contacts.CONTENT_URI);
// Show user only contacts w/ phone numbers
phoneContactIntent.setType(Phone.CONTENT_TYPE); 
startActivityForResult(phoneContactIntent, CHOOSE_CONTACT_TO_CALL);
然后,在onActivityResult中,它使用联系人选择器返回的数据为主应用程序创建一个新的意图

    switch (requestCode) {
    case (CHOOSE_CONTACT_TO_CALL):
        if (resultCode == Activity.RESULT_OK) {
            Intent resultIntent = new Intent(this, Home.class);
            resultIntent.putExtras(data);

            Uri contactData = data.getData();
            if (contactData != null)
            {
                resultIntent.setData(contactData);
            }
            startActivity(resultIntent);
        }
    }
    finish();
在我的家庭课程中,在
onCreate
中,我调用
getIntent()
并检查启动主活动的intent中的数据