本人正处于安卓初步学习阶段,现整合一下知识点并写一个通讯录软件来实践一下。写完了发现我这通讯录只实现了添加联系人,而没有重新编辑联系人信息和删除联系人的功能。。但我复习的目的已经达到了,所以这些功能就先忽略。
实现功能:
一、添加联系人;
二、点击联系人可以拨打对应号码;
界面:
一、主界面:
主界面由一个自定义的标题栏控件和一个Listview组成。点下标题栏的添加按钮会启动AddActivity,显示添加联系人界面。ListView显示联系人列表,点击可拨打对应的号码。
关键代码:
`contactsView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override //为ListView注册监听
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
name=contactsList.get(i);
Cursor cursor1=db.query("Friend",null,"name=?",new String[]{name},null,null,null);
if(cursor1.moveToFirst()){ number=cursor1.getString(cursor1.getColumnIndex("number"));
cursor1.close();} //取得点击项的number
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(number);}
}
});
}
private void call(String number){
//new一个对话框,ok里面实现打电话
final String num=number;
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("");
dialog.setMessage("打电话给"+name);
dialog.setCancelable(true);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
try{ Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+num));
startActivity(intent);}catch(SecurityException e){
e.printStackTrace();
}
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.show();
}`
二、添加联系人界面
添加联系人界面如上图,输入名字和号码之后点击保存,将数据保存到SQLitebase。这里如果输入姓名或号码为空的话就用Toast提醒输入信息不完整。
关键代码:
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name=editName.getText().toString();
String number=editNumber.getText().toString();
if(name.isEmpty()||number.isEmpty())
{
Toast.makeText(AddActivity.this,"输入信息不完整",Toast.LENGTH_SHORT).show();}
else {
SQLiteDatabase db=MainActivity.dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name",name);
values.put("number",number);
db.insert("Friend",null,values);
//保存到数据库(用SQLiteDatabase)
MainActivity.contactsList.add(name);
MainActivity.adapter.notifyDataSetChanged();//名字更新listview
Toast.makeText(AddActivity.this,"联系人已保存",Toast.LENGTH_SHORT).show();
AddActivity.this.finish();
}
}
});
演示:
涉及到的知识点:
自定义控件顶部标题栏;
各种系统控件;
数据库SQLiteDatabase(保存联系人数据);
运行时权限处理(拨打电话是危险权限需要做运行时权限处理)。