gpt4 book ai didi

Android:如何在 Android 中访问电子邮件地址

转载 作者:行者123 更新时间:2023-11-29 02:17:17 24 4
gpt4 key购买 nike

我有以下代码,通过它我可以检索电话号码。不知何故,我无法使用 android.provider.Contacts.People API 检索电子邮件地址。有什么想法吗?

import android.app.AlertDialog;
import android.app.ExpandableListActivity;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.view.View;
import android.widget.ExpandableListAdapter;
import android.widget.SimpleCursorTreeAdapter;
import android.widget.TextView;
import android.widget.ExpandableListView.OnChildClickListener;

public class ShowContacts extends ExpandableListActivity implements OnChildClickListener {
private int mGroupIdColumnIndex;

private String mPhoneNumberProjection[] = new String[] {
People.Phones._ID, People.NUMBER // CHANGE HERE
};


private ExpandableListAdapter mAdapter;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


// Query for people
Cursor groupCursor = managedQuery(People.CONTENT_URI,
new String[] {People._ID, People.NAME}, null, null, null);

// Cache the ID column index
mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow(People._ID);

// Set up our adapter
mAdapter = new MyExpandableListAdapter(groupCursor,
this,
android.R.layout.simple_expandable_list_item_1,
android.R.layout.simple_expandable_list_item_1,
new String[] {People.NAME}, // Name for group layouts
new int[] {android.R.id.text1},
new String[] {People.NUMBER}, // AND CHANGE HERE
new int[] {android.R.id.text1});
setListAdapter(mAdapter);
}

public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
int[] childrenTo) {
super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,
childrenTo);
}

@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
// Given the group, we return a cursor for all the children within that group

// Return a cursor that points to this contact's phone numbers
Uri.Builder builder = People.CONTENT_URI.buildUpon();

ContentUris.appendId(builder, groupCursor.getLong(mGroupIdColumnIndex));
builder.appendEncodedPath(People.Phones.CONTENT_DIRECTORY);
Uri phoneNumbersUri = builder.build();

return managedQuery(phoneNumbersUri, mPhoneNumberProjection, null, null, null);
}
}

@Override
public boolean onChildClick(android.widget.ExpandableListView parent,
View v, int groupPosition, int childPosition, long id) {
AlertDialog dialog = new AlertDialog.Builder(ShowContacts.this)
.setMessage(((TextView) v).getText().toString())
.setPositiveButton("OK", null).create();
dialog.show();
return true;
}
}

最佳答案

根据 CommonsWare 的建议,您应该使用条件类加载来支持这两种模型。无论如何,一个快速而肮脏的解决方案是:

private static final String CONTACT_METHODS_PROJECTION[] = new String[] {
Contacts.ContactMethods._ID,
Contacts.ContactMethods.DATA
};

private static final int ID_COLUMN_INDEX = 0;


@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
// Given the group, we return a cursor for all the children within that group

return managedQuery(Contacts.ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
ContactMethods.PERSON_ID + "= ? AND " + ContactMethods.KIND + " = " + Contacts.KIND_EMAIL,
new String[] { Long.toString(groupCursor.getLong(ID_COLUMN_INDEX)) },
null);
}

关于Android:如何在 Android 中访问电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com