質問

all..i have made a demo in android in that i have opened intent of addressbook and in my "onActivityResult" i am binding Contact name to List,All is going well but problem is i want ,if 1 contact name isalready added it shouldnt be added again ,my code is as below:

main.java

package com.example.mycontactpicker;

import java.util.zip.Inflater;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    public Button add;
    public TextView contact;
    public LinearLayout list;
    private static final int CONTACT_PICKER_RESULT = 1200;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        add = (Button) findViewById(R.id.add);

        list = (LinearLayout) findViewById(R.id.list);

        add.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent intent = new Intent(Intent.ACTION_PICK,
                        ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(intent, CONTACT_PICKER_RESULT);

            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
            case CONTACT_PICKER_RESULT:

                Uri contactData = data.getData();
                Cursor c = managedQuery(contactData, null, null, null, null);
                String orgName = "";
                String title = "";
                String emailId = "";
                String cNumber = "";
                String zipCode = "";
                if (c.moveToFirst()) {
                    // Fetch Contact Name
                    String DisplayName = c
                            .getString(c
                                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                    System.out.println("==============Display name:::::::::;; "
                            + DisplayName);
                    View inflateView;
                    inflateView = LayoutInflater.from(MainActivity.this)
                            .inflate(R.layout.contact_row, null, true);
                    contact = (TextView) inflateView.findViewById(R.id.contact);
                    contact.setText(DisplayName);
                    list.addView(inflateView);

                    Toast.makeText(getApplicationContext(), DisplayName,
                            Toast.LENGTH_LONG).show();
                    String hasPhone = c
                            .getString(c
                                    .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
                    String contactId = c.getString(c
                            .getColumnIndex(ContactsContract.Contacts._ID));
                    // long id = c.getLong(Integer.parseInt(contactId));

                    if (DisplayName.equals("") || DisplayName.equals(" ")) {
                        DisplayName = c
                                .getString(c
                                        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME_ALTERNATIVE));
                        System.out
                                .println("=============Display name:::::::::::outer side "
                                        + DisplayName);


                    }
                }
            }
        }
    }
}

pls help frends

役に立ちましたか?

解決

To check if a contact name already exists in the address book you could add...

    public boolean contactExists(String contact) {
    if (contact != null) {
        Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (cursor.moveToNext()) {
            if (contact.equalsIgnoreCase(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)))) {
                return true;
            }


        }
    }
    return false;
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top