预定义获取联系人
package com.test; import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.ContactsContract; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.example.textmethod.R; public class MainActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView ed = findViewById(R.id.tv); ed.setText(getName()); } private String getName() { String[] strings = new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}; ContentResolver contentResolver = getContentResolver(); StringBuffer stringBuffer = new StringBuffer(); Cursor query = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, strings, null, null, null); int index = query.getColumnIndex(strings[0]); int nameindex = query.getColumnIndex(strings[1]); for (query.moveToFirst(); !query.isAfterLast(); query.moveToNext()) { int anInt = query.getInt(index); String namestring = query.getString(nameindex); stringBuffer.append("id:" + anInt + " name:" + namestring); } query.close(); return stringBuffer.toString(); } }
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
package com.test; import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.ContactsContract; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.example.textmethod.R; public class MainActivity extends Activity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView ed = findViewById(R.id.tv); ed.setText(getName()); } private String getName() { String[] strings = new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.CONTACT_ID}; ContentResolver contentResolver = getContentResolver(); StringBuffer stringBuffer = new StringBuffer(); Cursor query = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); int index = query.getColumnIndex(strings[0]); int nameindex = query.getColumnIndex(strings[1]); for (query.moveToFirst(); !query.isAfterLast(); query.moveToNext()) { int anInt = query.getInt(index); String namestring = query.getString(nameindex); stringBuffer.append("id:" + anInt + " name:" + namestring); Cursor query1 = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, strings[3] + "=" + anInt, null, null); while(query1.moveToNext()){ int index1 = query1.getColumnIndex(strings[2]); String number = query1.getString(index1); stringBuffer.append(" 电话:"+number); } } query.close(); return stringBuffer.toString(); } }
自定义
package com.test; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.ContactsContract; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CursorAdapter; import android.widget.EditText; import android.widget.Filterable; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.example.textmethod.R; public class MainActivity extends Activity { String[] colums=new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); AutoCompleteTextView ed = findViewById(R.id.tv); ContentResolver contentResolver = getContentResolver(); Cursor c = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,colums,null,null,null); Curadpter curadpter=new Curadpter(this,c); ed.setAdapter(curadpter); } }
package com.test; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.FilterQueryProvider; import android.widget.Filterable; import android.widget.TextView; import com.example.textmethod.R; public class Curadpter extends CursorAdapter implements Filterable { ContentResolver contentResolver; String[] colums=new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}; public Curadpter(Context context, Cursor c) { super(context, c); contentResolver = context.getContentResolver(); } @Override public View newView(Context context, Cursor cursor, ViewGroup viewGroup) { LayoutInflater layoutInflater = LayoutInflater.from(context); TextView tv = (TextView) layoutInflater.inflate(android.R.layout.simple_dropdown_item_1line, viewGroup, false); tv.setText(cursor.getString(1)); return tv; } @Override public void bindView(View view, Context context, Cursor cursor) { ((TextView) view).setText(cursor.getString(1)); } @Override public CharSequence convertToString(Cursor cursor) { return cursor.getString(1); } @Override public Cursor runQueryOnBackgroundThread(CharSequence constraint) { FilterQueryProvider filterQueryProvider = getFilterQueryProvider(); if(filterQueryProvider!=null){ return filterQueryProvider.runQuery(constraint); } Uri uri=Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI,Uri.encode(constraint.toString())); return contentResolver.query(uri,colums,null,null,null); } }