6

Android 連絡先アプリを開いてすべての連絡先を表示し、そのうちの 1 つを選択するのは簡単です。

活動中:

    private int PICK_CONTACT = 853456;

    // ...

    // open contact list
    void openContactPicker() {
        Intent it= new Intent(Intent.ACTION_PICK,  Contacts.CONTENT_URI);
        startActivityForResult(it, PICK_CONTACT);
    }

    // when back from intent: use pick result
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // ...
        switch (requestCode) {
        case PICK_CONTACT:
            if (dataOk(data)) {
                extractContactInfo(data);
            } else {
                showErrorMessage();
            }
            break;
        // ...
    }

しかし、特定の要素 (完全な郵便情報、適切な電子メール、電話番号など) を持つ連絡先のみを連絡先アプリに表示するように、フィルター基準を設定することは可能ですか?

私のアプリには郵便情報が必要です。現在実装されているワークフローは次のようになります。

  • ユーザーがボタンをクリックして連絡先を開く
  • 連絡先アプリが起動し、すべての連絡先が表示されます
  • ユーザーはいずれかを選択します
  • 私のアクティビティに戻って、連絡先がチェックされます
    • 利用可能な郵便情報 -> 正しいことを行う
    • 郵便情報が利用できない -> メッセージ ボックス

多くの連絡先には郵便番号がないため、ほとんどの場合、「この連絡先の郵便番号がありません」というメッセージ ボックスが表示されます。これは容認できる動作ではありません。

1 つの代替方法は、アプリ内の連絡先データベースにクエリを実行し、独自のコードでフィルタリングを行うことですが、このアプローチを使用すると、いくつかの影響があります。

  • アプリには連絡先の読み取り権限が必要ですが、これは多くのユーザーにとっては難しいかもしれません
  • 連絡先ピッカーを実装する必要があります。これは、ユーザーが慣れ親しんでいるものとは異なる可能性があります

したがって、連絡先アプリにいくつかの基準を設定することは、これを行うためのはるかにエレガントな方法のようです.

アプリは Android 2.3.3 以降で実行する必要があります。

質問:

  1. 2.3.3 で、startActivityForResult 経由で起動するときに、連絡先アプリのフィルター基準 (特に「has_postal_information」など) を設定することは可能ですか?
  2. そうでない場合: それ以降の OS バージョンでは可能ですか?
4

1 に答える 1