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 classMainActivity extends AppCompatActivity {private List contactsList = new ArrayList<>();privateButton btn;privateListView listView;privateString tel;
@Overrideprotected voidonCreate(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(newView.OnClickListener() {
@Overridepublic voidonClick(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(newAdapterView.OnItemClickListener() {
@Overridepublic void onItemClick(AdapterView> parent, View view, int position, longid) {
Contacts contacts= contactsList.get(position);
tel=contacts.getTel();
AlertDialog.Builder dialog= new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("提示");
dialog.setMessage("将拨打电话");
dialog.setPositiveButton("确认", newDialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, intwhich) {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("取消", newDialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, intwhich) {
}
});
dialog.show();
}
});
}private voidcall(String tel) {try{
Intent intent= newIntent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" +tel));
startActivity(intent);
}catch(SecurityException e) {
e.printStackTrace();
}
}private voidinitDate() {
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(newContacts(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);
}
}
}