如何从主屏幕拨打联系人选择器?

时间:2013-08-12 19:22:05

标签: android homescreen contactpicker

我正在尝试创建自定义Android主屏幕。我已经使用了主屏应用程序示例并对其进行了调整。我想做的事情是从主屏幕中的按钮打开联系人选择器,并使用用户在下一个操作中选择的联系人。我偶然发现this question中提到的同样问题。

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

联系人选择器是一个我可以继承的活动(我已搜索但找不到任何活动),以便我可以使用David Wasser在上述问题中提出的解决方案吗?

1 个答案:

答案 0 :(得分:0)

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

我的主要活动启动了一个具有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();

在我的Home课程中,在onCreate中,我调用getIntent()并检查启动主要活动的意图中的数据。