0

これは私が持っているコードですが、連絡先をクリックするたびに強制的に閉じます。連絡先を取得したときにテキストビューに追加するためのコードはありますか?

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);
}

}

4

2 に答える 2

0

すべての電子メール、電話番号、Web アドレスなどに使用する必要があります。

例:

Linkify.addLinks(textView, Linkify.WEB_URLS);

  1. パラメータ:文字列を追加するテキストビュー
  2. メール、電話、ウェブのどれを追跡したいですか

詳細: http://developer.android.com/reference/android/text/util/Linkify.html

注: このために onClick などを実装する必要はありません。Linkif が自動的に管理します。

于 2014-11-06T07:42:44.270 に答える
0

連絡先リストに関する私の経験に基づいて、利用可能なものに基づいてクエリを設計する必要があります。1.6 では、すべての情報を含む 1 つのテーブルというシンプルさがありました。でも; 2.0 の夜明けとともに、2 つのテーブルが導入されました。1 つのテーブルから ID を取得し、この ID に基づいてクエリを実行して電話番号を検索します。これを説明するために、ここに私のために働いたサンプルコードがあります.70人のユーザー全員がIDと電話番号を持っているにもかかわらず、一部の連絡先が電話番号2/70を返さないという小さな問題があります. 私はそれが役立つことを願っています:

    // 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));

他にご不明な点がございましたら、お気軽にお問い合わせください。できる限りお答えいたします。ログ猫なしで私が言えることは、電話番号をクエリの適切なテーブル構造で検索しようとしているということです。0 行を返したクエリから情報にアクセスしようとすると、例外が発生します。そのエラーを読んで表示してください。

于 2010-12-03T18:13:04.363 に答える