как получить контактный номер в текстовом представлении? - PullRequest
0 голосов
/ 03 декабря 2010

это код, который у меня есть, но каждый раз, когда я нажимаю на контакт, он принудительно закрывается. и есть ли код, чтобы, когда я получаю контакт, он добавляет его в текстовое представление?

public static final String TAG = "ContactManager";

private Button mAddAccountButton;
private ListView mContactList;
private boolean mShowInvisible;
private CheckBox mShowInvisibleControl;

/**
 * Called when the activity is first created. Responsible for initializing the UI.
 */
@Override
public void onCreate(Bundle savedInstanceState)
{
    Log.v(TAG, "Activity State: onCreate()");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);

    // Obtain handles to UI objects
    mAddAccountButton = (Button) findViewById(R.id.AddContact);
    mContactList = (ListView) findViewById(R.id.ContactList);
    mShowInvisibleControl = (CheckBox) findViewById(R.id.ShowInvisible);

    // Initialize class properties
    mShowInvisible = false;
    mShowInvisibleControl.setChecked(mShowInvisible);

    // Register handler for UI elements
    mAddAccountButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.d(TAG, "mAddAccountButton clicked");
            launchContactAdder();
        }
    });
    mShowInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            Log.d(TAG, "mShowInvisibleControl changed: " + isChecked);
            mShowInvisible = isChecked;
            populateContactList();
        }
    });

    // Populate the contact list
    populateContactList();
}

/**
 * Populate the contact list based on account currently selected in the account spinner.
 */
private void populateContactList() {
    // Build adapter with contact entries
    Cursor cursor = getContacts();
    String[] fields = new String[] {
            ContactsContract.Data.DISPLAY_NAME
    };
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.main, cursor,
            fields, new int[] {R.id.TextView01});
    mContactList.setAdapter(adapter);
}

/**
 * Obtains the contact list for the currently selected account.
 *
 * @return A cursor for for accessing the contact list.
 */
private Cursor getContacts()
{
    // Run query
    Uri uri = ContactsContract.Contacts.CONTENT_URI;
    String[] projection = new String[] {
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME
    };
    String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
            (mShowInvisible ? "0" : "1") + "'";
    String[] selectionArgs = null;
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

    return managedQuery(uri, projection, selection, selectionArgs, sortOrder);

}

/**
 * Launches the ContactAdder activity to add a new contact to the selected account.
 */
protected void launchContactAdder() {
    Intent i = new Intent(this,Class1.class);
    startActivity(i);
}

}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2014

Вы должны использовать все адреса электронной почты, номера телефонов, веб-адреса и т. Д.

Пример:

Linkify.addLinks (textView, Linkify.WEB_URLS);

  1. Параметр: текстовое представление, к которому вы добавляете строку
  2. Какую вещь вы хотите отслеживать по электронной почте, телефону или в Интернете

Для более подробной информации: http://developer.android.com/reference/android/text/util/Linkify.html

Примечание: для этого вам не нужно реализовывать какие-либо onClick и т. Д. Linkif автоматически управляет им.

0 голосов
/ 03 декабря 2010

Основываясь на моем опыте работы со списком контактов, вам нужно разработать свой запрос на основе того, что доступно.В 1.6 была простота одной таблицы со всей информацией.Тем не мение;с рассветом 2.0 они представили две таблицы.Где вы получаете идентификатор из одной таблицы и запрос на основе этого идентификатора, чтобы найти номер телефона.Чтобы проиллюстрировать это, приведу пример кода, который работал для меня, хотя у меня есть некоторые незначительные проблемы, когда некоторые контакты не возвращают номер телефона 2/70, хотя у всех 70 пользователей есть ID и номер телефона.Я надеюсь, что это поможет:

    // look up contact via name

            String name = contacts.getItem(arg1);
    Uri lookup = Uri.withAppendedPath(
            ContactsContract.Contacts.CONTENT_FILTER_URI, name);

    // look up id
    Cursor c = getContentResolver().query(lookup, null, null, null, null);
    String id = null;
    int id_index = c.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
    if (c.moveToFirst())
        id = c.getString(id_index);
    else
        Toast.makeText(getApplicationContext(), "Friend not found",
                Toast.LENGTH_SHORT).show();
    c.close();

    // use id if not null, to find contact's phone number / display name
    if (id != null) {
        String where = ContactsContract.Data.CONTACT_ID + " = " + id
                + " AND " + ContactsContract.Data.MIMETYPE + " = '"
                + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
                + "'";

        c = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
                null, where, null, null);

        c.moveToFirst();

        int iname = c
                .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME);
        int iphone = c
                .getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);

        if (c.getCount() > 0) {
            _friend.setName(c.getString(iname));
            _friend.setPhone(c.getString(iphone));

Если у вас есть какие-либо дополнительные вопросы, пожалуйста, не стесняйтесь спрашивать, я сделаю все возможное, чтобы ответить на них.Что я могу сказать без журнала cat, так это то, что вы пытаетесь найти в телефонном номере правильную структуру таблицы для запроса.Если вы попытаетесь получить доступ к информации из запроса, который вернул 0 строк, вы получите исключение.Пожалуйста, прочитайте эту ошибку и покажите ее.

...