0

ユーザーがこの方法で People アプリから連絡先を選択できるようにしようとしています。

private async Task<System.Collections.Generic.KeyValuePair<string, string>> SelectAContactForASlot()
{
    KeyValuePair<string, string> kvp; // = new KeyValuePair<string, string>();
    var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
    contactPicker.CommitButtonText = "Select";
    var contact = await contactPicker.PickSingleContactAsync();
    if (contact != null)
    {
        kvp = new KeyValuePair<string, string>(contact.Name, contact.Emails[0].ToString());
        return kvp;
    }
    return kvp = new KeyValuePair<string, string>("No Name found", "No email found");
}

People アプリは呼び出されますが、次のようになります。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ 人 v

エラーが発生したため、このアプリは現在連絡先を選択できません。

アプリをもう一度選択してみてください。

            | Select |  | Cancel |

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~

昨日、いくつかの連絡先を追加したので、連絡先が含まれています。私のコードに何か問題がありますか、またはこの問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

あなたのコードを試してみたところ、期待どおり連絡先ピッカーが開きました。試しに、Click私が行ったように、イベント ハンドラーからメソッドを呼び出す 1 つのボタンを備えた新しいアプリケーションを作成してみてください。

また、問題が解決しない場合は、マシンに新たにログオン/再起動することをお勧めします。過去に共有機能で同様の問題があったことは知っています。コードで間違って処理した後、再起動するまで正しいコードでさえ機能しなくなりました。

私がそれに取り組んでいる間、コードを少し変更したいかもしれません-実際に電子メールアドレスを取得するには、次のように置き換えcontact.Emails[0].ToString()ますcontact.Emails[0].Value:

private async Task<System.Collections.Generic.KeyValuePair<string, string>> SelectAContactForASlot()
{
    KeyValuePair<string, string> kvp; // = new KeyValuePair<string, string>();
    var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
    contactPicker.CommitButtonText = "Select";
    var contact = await contactPicker.PickSingleContactAsync();
    if (contact != null)
    {
        kvp = new KeyValuePair<string, string>(contact.Name, contact.Emails[0].Value);
        return kvp;
    }
    return kvp = new KeyValuePair<string, string>("No Name found", "No email found");
}

連絡先が電子メール アドレスを持っていない場合も、ケースを処理することを忘れないでください。

于 2012-11-20T05:52:58.203 に答える