项目结构
添加依赖
implementation 'com.android.support:recyclerview-v7:27.1.1'
添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/contacts_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v7.widget.LinearLayoutCompat>
contacts_item.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.AppCompatTextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.LinearLayoutCompat>
ContactsBean类
public class ContactsBean {
private String name;
private String number;
public ContactsBean(String name, String number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
ContactsAdapter
public class ContactsAdapter extends RecyclerView.Adapter<ContactsAdapter.ViewHolder> {
private List<ContactsBean> contactsList;
static class ViewHolder extends RecyclerView.ViewHolder {
AppCompatTextView contactsName;
AppCompatTextView contactsNumber;
public ViewHolder(View view) {
super(view);
contactsName = view.findViewById(R.id.name);
contactsNumber = view.findViewById(R.id.number);
}
}
public ContactsAdapter(List<ContactsBean> contactsList) {
this.contactsList = contactsList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.contacts_item, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ContactsBean contactsBean= contactsList.get(position);
holder.contactsNumber.setText(contactsBean.getNumber());
holder.contactsName.setText(contactsBean.getName());
}
@Override
public int getItemCount() {
return contactsList.size();
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private List<ContactsBean> contactsList = new ArrayList<>();
private ContactsAdapter adapter;
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.contacts_view);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
adapter = new ContactsAdapter(contactsList);
recyclerView.setAdapter(adapter);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 1);
} else {
readComtacts();
}
}
private void readComtacts() {
Cursor cursor = null;
ContactsBean contactsBean = null;
try {
//查询联系人
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
//获取姓名
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//获取电话
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactsBean = new ContactsBean(displayName, number);
contactsList.add(contactsBean);
}
adapter.notifyDataSetChanged();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if (cursor!=null){
cursor.close();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
recreate();
}else {
Toast.makeText(this,"you denied the permission",Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
}
运行程序
读取出了系统联系人实现了跨程序数据共享。