下载链接 (ps:鉴于上传限制,文件中只包含了main下的主要文件)
目录结构如下:
java代码
Contacts.java
ContactsAdapter.java
MainActivity.java
layout布局
activity_main.xml
list_layout.xml
Contacts.java
package com.example.call; public class Contacts { private String name; private String tel; public Contacts(String name, String tel) { this.name = name; this.tel = tel; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } }
ContactsAdapter.java
package com.example.call; import android.content.Context; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 2019/7/11. */ public class ContactsAdapter extends ArrayAdapter<Contacts> { private int resourceId; public ContactsAdapter(Context context, int textViewResourceId, List<Contacts> objects) { super(context, textViewResourceId, objects); resourceId = textViewResourceId; } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { Contacts contacts = getItem(position); View view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false); TextView list_name = (TextView) view.findViewById(R.id.list_name); TextView list_tel = (TextView) view.findViewById(R.id.list_tel); list_name.setText(contacts.getName()); list_tel.setText(contacts.getTel()); return view; } }
MainActivity.java
package com.example.call; import android.Manifest; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<Contacts> contactsList = new ArrayList<>(); private Button btn; private ListView listView; private String tel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.init_btn); listView = (ListView) findViewById(R.id.contacts_listView); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, 1); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); } btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "无权限", Toast.LENGTH_SHORT).show(); } else { initDate(); } } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Contacts contacts = contactsList.get(position); tel = contacts.getTel(); AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); dialog.setTitle("提示"); dialog.setMessage("将拨打电话"); dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); } else { call(tel); } } }); dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.show(); } }); } private void call(String tel) { try { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + tel)); startActivity(intent); } catch (SecurityException e) { e.printStackTrace(); } } private void initDate() { Cursor cursor = null; try { cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 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)); contactsList.add(new Contacts(displayName, number)); } } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } } if (contactsList.size() > 0) { ContactsAdapter adapter = new ContactsAdapter(MainActivity.this, R.layout.list_layout, contactsList); listView.setAdapter(adapter); } } }
activity_main.xml.java
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.call.MainActivity"> <Button android:id="@+id/init_btn" android:text="初始化通讯录" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:id="@+id/contacts_listView" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
list_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/list_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp"/> <TextView android:id="@+id/list_tel" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.call"> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <application ...... </application> </manifest>
完!