Android-Studio简易手机通讯录
注:1.安卓作业分享,源码来自《Android移动开发项目式教程(第2版)》
2.分享给期末忙着不想敲作业的同学
3.如果有帮助,记得给个攒哦
1. AndroidManifest.xml
<!-- AndroidManifest.xml -->
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zhy.myapplication"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><providerandroid:authorities="con.zhy.mycontacts.mycontactscontentprovider"android:name=".Actions.MyContactsContentProvider"android:exported="true"/><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 增加号码录入Activity--><activity android:name=".Actions.AddContactsActivity"></activity><!-- 修改号码录入Activity--><activity android:name=".Actions.UpdateContactsActivity"></activity><!-- 查询号码录入Activity--><activity android:name=".Actions.ContactsMessageActivity"></activity></application><!-- 添加导出手机电话本所需要的权限--><uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/></manifest>
2.MainActivity.java
package com.zhy.myapplication;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import com.zhy.myapplication.Actions.AddContactsActivity;
import com.zhy.myapplication.Actions.ContactsMessageActivity;
import com.zhy.myapplication.Actions.UpdateContactsActivity;
import com.zhy.myapplication.Contact.ContactsTable;
import com.zhy.myapplication.Contact.User;public class MainActivity extends AppCompatActivity {private ListView listView;//显示结果列表private BaseAdapter listViewAdapter;//ListView 列表适配器private User users[];//通讯录用户private int selecteItem = 0; //当前选择的数据项@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setTitle("通讯录");listView = (ListView)findViewById(R.id.listView);//绑定listViewloadContacts();//加载数据}/*** 加载联系人列表*/private void loadContacts(){//获取所有通讯录联系人ContactsTable ct = new ContactsTable(this);users = ct.getAllUser();//为listView列表创建适配器listViewAdapter = new BaseAdapter() {@SuppressLint("SetTextI18n")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {TextView textView = new TextView(MainActivity.this);textView.setTextSize(22);convertView = textView;}String mobile = users[position].getMobile() == null ? "" : users[position].getMobile();((TextView) convertView).setText(users[position].getName() + "---" + mobile);if (position == selecteItem) {convertView.setBackgroundColor(Color.YELLOW);} else {convertView.setBackgroundColor(0);}return convertView;}@Overridepublic int getCount() {return users.length;}@Overridepublic Object getItem(int position) {return users[position];}@Overridepublic long getItemId(int position) {return position;}};//设置listVIew控件的适配器listView.setAdapter(listViewAdapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {selecteItem = arg2; //记录单击列的位置listViewAdapter.notifyDataSetChanged();//刷新列表}});}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu){menu.add(Menu.NONE,1,Menu.NONE,"添加");menu.add(Menu.NONE,2,Menu.NONE,"编辑");menu.add(Menu.NONE,3,Menu.NONE,"查看信息");menu.add(Menu.NONE,4,Menu.NONE,"删除");menu.add(Menu.NONE,5,Menu.NONE,"查询");menu.add(Menu.NONE,6,Menu.NONE,"退出");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){String sHint;switch (item.getItemId()){case 1://添加Intent intent = new Intent(MainActivity.this, AddContactsActivity.class);startActivity(intent);break;case 2://编辑//根据数据库ID判断当前记录是否可以操作if(users[selecteItem].getId_DB() > 0){intent = new Intent(MainActivity.this, UpdateContactsActivity.class);intent.putExtra("user_ID",users[selecteItem].getId_DB());startActivity(intent);}else{sHint = "无结果记录,无法操作!";Toast.makeText(this,sHint,Toast.LENGTH_SHORT).show();}break;case 3://查看信息if(users[selecteItem].getId_DB() > 0){intent = new Intent(MainActivity.this, ContactsMessageActivity.class);intent.putExtra("user_ID",users[selecteItem].getId_DB());startActivity(intent);}else{sHint = "无结果,无法操作!";Toast.makeText(this,sHint,Toast.LENGTH_SHORT).show();}break;case 4://删除if(users[selecteItem].getId_DB() > 0){delete();}else{sHint="无结果记录,无法操作!";Toast.makeText(this,sHint,Toast.LENGTH_SHORT).show();}break;case 5://查询new FindDialog(this).show();break;case 6://退出finish();break;default:break;}return super.onOptionsItemSelected(item);}@Overrideprotected void onResume() {super.onResume();//重新加载数据ContactsTable ct = new ContactsTable(this);users = ct.getAllUser();//刷新数据显示列表listViewAdapter.notifyDataSetChanged();}/*** 查询*/public class FindDialog extends Dialog {public FindDialog(@NonNull Context context) {super(context);}protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.find);setTitle("联系人查询");Button find = (Button)findViewById(R.id.find);Button cancel = (Button)findViewById(R.id.cancel);find.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {EditText value = (EditText)findViewById(R.id.value);ContactsTable ct = new ContactsTable(MainActivity.this);users = ct.findUserByKey(value.getText().toString());System.out.println("输入框的值:" +value.getText().toString());for(int i=0; i< users.length; i++){System.out.println("姓名是"+users[i].getName()+",电话是" +users[i].getMobile());}listViewAdapter.notifyDataSetChanged();selecteItem = 0;dismiss();}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});}}/*** 删除联系人*/public void delete(){AlertDialog.Builder alert = new AlertDialog.Builder(this);alert.setTitle("系统信息");alert.setMessage("是否删除联系人?");alert.setPositiveButton("是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int whichButton) {ContactsTable ct = new ContactsTable((MainActivity.this));//删除联系人信息if(ct.deleteByUser(users[selecteItem])){//重新获取数据users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();selecteItem = 0;Toast.makeText(MainActivity.this,"删除成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this,"删除失败!",Toast.LENGTH_SHORT).show();}}});alert.setNegativeButton("否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});alert.show();}/* //导入到手机电话本public void importPhone(String name,String phone){//系统通讯录ContentProvider的URLUri phoneURL = ContactsContract.Data.CONTENT_URI;ContentValues values = new ContentValues();//首先向RAWContacts.CONTENT_URI执行一个控制插入,目的是获取系统返回的rawContactIdUri rawContactUri = this.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI,values);insert(ContactsContract.RawContacts.CONTENT_URI,values);long rawContactId = ContentUris.parseId(rawContactUri);//向data表插入姓名values.clear();values.put(ContactsContract.Data.RAW_CONTACT_ID,rawContactId);values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,name);this.getContentResolver().insert(phoneURL,values);//向data表插入电话号码values.clear();values.put(ContactsContract.Data.RAW_CONTACT_ID,rawContactId);values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);this.getContentResolver().insert(phoneURL,values);}*/
}
3.AddContactsActivity.java
package com.zhy.myapplication.Actions;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.zhy.myapplication.Contact.ContactsTable;
import com.zhy.myapplication.Contact.User;
import com.zhy.myapplication.R;public class AddContactsActivity extends AppCompatActivity {private EditText nameEditText; //姓名输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qq输入框private EditText danweiEditText;//单位输入框private EditText addressEditText;//地址输入框@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_add);setTitle("添加联系人");//从已设置的页面布局获得对应的控件nameEditText = (EditText)findViewById(R.id.name);mobileEditText = (EditText)findViewById(R.id.mobile);danweiEditText = (EditText)findViewById(R.id.danWei);qqEditText = (EditText)findViewById(R.id.qq);addressEditText = (EditText)findViewById(R.id.address);}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu){menu.add(Menu.NONE,1, Menu.NONE,"保存");menu.add(Menu.NONE,2,Menu.NONE,"返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){switch (item.getItemId()){case 1://保存if(!nameEditText.getText().toString().equals("")){User user = new User();user.setName(nameEditText.getText().toString());user.setMobile(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct = new ContactsTable(AddContactsActivity.this);if(ct.addData(user)){Toast.makeText(AddContactsActivity.this,"添加成功",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(AddContactsActivity.this,"添加失败",Toast.LENGTH_SHORT).show();}}else {Toast.makeText(AddContactsActivity.this,"请输入数据!",Toast.LENGTH_SHORT).show();break;}case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}
}
4.ContactsMessageActivity.java
package com.zhy.myapplication.Actions;import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.zhy.myapplication.Contact.ContactsTable;
import com.zhy.myapplication.Contact.User;
import com.zhy.myapplication.R;/******************显示联系人界面*****************/
public class ContactsMessageActivity extends AppCompatActivity {@SuppressLint("SetTextI18n")@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.message);setTitle("联系人信息");TextView nameTextView; //姓名输入框TextView mobileTextView; //电话输入框TextView qqTextView; //qq输入框TextView danweiTextView; //单位输入框TextView addressTextView; //地址输入框User user;//从设置的页面布局查找对应的控件nameTextView = (TextView)findViewById(R.id.name);mobileTextView = (TextView)findViewById(R.id.mobile);danweiTextView = (TextView)findViewById(R.id.danWei);qqTextView = (TextView)findViewById(R.id.qq);addressTextView = (TextView)findViewById(R.id.address);//将要修改的联系人数据复制到用户界面进行显示Bundle localBundle = getIntent().getExtras();assert localBundle != null;int id = localBundle.getInt("user_ID");ContactsTable ct = new ContactsTable(this);user = ct.getUserByID(id);nameTextView.setText("姓名:"+user.getName());mobileTextView.setText("电话:"+user.getMobile());qqTextView.setText("Q Q:"+user.getQq());danweiTextView.setText("单位:"+user.getDanwei());addressTextView.setText("地址:"+user.getAddress());}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu){menu.add(Menu.NONE,1,Menu.NONE,"返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){if (item.getItemId() == 1) {//返回finish();}return super.onOptionsItemSelected(item);}
}
5.MyContactContentProvider.java
package com.zhy.myapplication.Actions;import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;public class MyContactsContentProvider extends ContentProvider {private final static String AUTHORITY = "con.zhy.mycontacts.mycontactscontentprovider";private final static String PERSONS_PATH = "person";//多条数据private final static String PERSON_PATH = "person/#";//单条数据private final static int PERSONS = 1;private final static int PERSON = 2;private final static UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);static {// content://com.zhy.mycontacts.mycontactscontentprovide/personsMatcher.addURI(AUTHORITY,PERSON_PATH,PERSONS);// content://com.zhy.mycontacts.mycontactscontentprovide/person/#sMatcher.addURI(AUTHORITY,PERSON_PATH,PERSON);}private SQLiteDatabase db = null;//数据库对象@Overridepublic boolean onCreate() {//创建数据库return false;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {return null;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return null;}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {return null;}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {return 0;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {return 0;}
}
6.UpdateContactsActivity.java
package com.zhy.myapplication.Actions;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.zhy.myapplication.Contact.ContactsTable;
import com.zhy.myapplication.Contact.User;
import com.zhy.myapplication.R;//修改号码记录操作界面
public class UpdateContactsActivity extends AppCompatActivity {//姓名输入框private EditText nameEditText;//号码输入框private EditText mobileEditText;//单位输入框private EditText danweiEditText;//qqprivate EditText qqEditText;//地址private EditText addressEditText;//修改的联系人private User user;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.edit);setTitle("修改联系人");//从已设置的页面布局查找对应的控件nameEditText = (EditText)findViewById(R.id.name);mobileEditText = (EditText)findViewById(R.id.mobile);danweiEditText = (EditText)findViewById(R.id.danWei);qqEditText = (EditText)findViewById(R.id.qq);addressEditText = (EditText)findViewById(R.id.address);//将要修改的联系人数据赋值到用户界面显示Bundle localBundle = getIntent().getExtras();int id = localBundle.getInt("user_ID");ContactsTable ct = new ContactsTable(this);user = ct.getUserByID(id);nameEditText.setText(user.getName());mobileEditText.setText(user.getMobile());danweiEditText.setText(user.getDanwei());qqEditText.setText(user.getQq());addressEditText.setText(user.getAddress());}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu){menu.add(Menu.NONE,1,Menu.NONE,"保存");menu.add(Menu.NONE,2,Menu.NONE,"返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){switch (item.getItemId()){case 1: //保存if (!nameEditText.getText().toString().equals("")){user.setName(nameEditText.getText().toString());user.setMobile(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct = new ContactsTable(UpdateContactsActivity.this);//修改数据库联系人信息if (ct.updateUser(user)){Toast.makeText(UpdateContactsActivity.this,"修改成功!",Toast.LENGTH_SHORT).show();finish();}else {Toast.makeText(UpdateContactsActivity.this,"修改失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(UpdateContactsActivity.this,"数据不能为空!",Toast.LENGTH_SHORT).show();}break;case 2: //返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}
1.main.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"
><ListViewandroid:id="@+id/listView"android:layout_weight="1.0"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>
2.edit.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"><!--姓名--><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="姓名:"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/name"android:layout_width="302dp"android:layout_height="wrap_content" /></LinearLayout><!--单位--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="单位:"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/danWei"android:layout_width="302dp"android:layout_height="wrap_content"android:minLines="3"/></LinearLayout><!--手机号码--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="电话:"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/mobile"android:layout_width="302dp"android:layout_height="wrap_content"android:inputType="number"/></LinearLayout><!--qq--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="Q Q:"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/qq"android:layout_width="302dp"android:layout_height="wrap_content"android:inputType="number"/></LinearLayout><!--地址--><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="地址:"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/address"android:layout_width="302dp"android:layout_height="wrap_content"android:minLines="3"/></LinearLayout></LinearLayout>
3.layout_add.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"><!--姓名--><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="姓名"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/name"android:layout_width="190dp"android:layout_height="wrap_content"/></LinearLayout><!--单位--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="单位"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/danWei"android:layout_width="190dp"android:layout_height="wrap_content"android:minLines="3"/></LinearLayout><!--手机号码--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="电话"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/mobile"android:layout_width="190dp"android:layout_height="wrap_content"android:inputType="number"/></LinearLayout><!--qq--><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="qq"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/qq"android:layout_width="190dp"android:layout_height="wrap_content"android:inputType="number"/></LinearLayout><!--地址--><LinearLayoutandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"><TextViewandroid:layout_width="80dp"android:layout_height="wrap_content"android:text="地址"android:textSize="22dp"android:layout_marginLeft="5dp"/><EditTextandroid:id="@+id/address"android:layout_width="190dp"android:layout_height="wrap_content"android:minLines="3"/></LinearLayout>
</LinearLayout>
4.message.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"><!-- 姓名 --><TextViewandroid:id="@+id/name"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="姓名:"android:textSize="22dp"android:layout_marginLeft="5.0dip"android:layout_marginTop="20dp"/><!-- 单位 --><TextViewandroid:id="@+id/danWei"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="单位:"android:textSize="22dp"android:layout_marginLeft="5.0dip"android:layout_marginTop="20dp"/><!-- 手机号码 --><TextViewandroid:id="@+id/mobile"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="手机号码:"android:textSize="22dp"android:layout_marginLeft="5.0dip"android:layout_marginTop="20dp"/><!-- QQ --><TextViewandroid:id="@+id/qq"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="QQ:"android:textSize="22dp"android:layout_marginLeft="5.0dip"android:layout_marginTop="20dp"/><!-- 地址 --><TextViewandroid:id="@+id/address"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="地址:"android:textSize="22dp"android:layout_marginLeft="5.0dip"android:layout_marginTop="20dp"/>
</LinearLayout>
5.find.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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="50dp"android:text="条件:"android:textSize="20dp"android:layout_marginRight="10dp"android:layout_marginLeft="10dp"/></LinearLayout><EditTextandroid:id="@+id/value"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10"android:inputType="textPersonName"android:text="" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="10dp"android:layout_gravity="center_horizontal"><Buttonandroid:id="@+id/find"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="查 询" /><Buttonandroid:id="@+id/cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="取 消" /></LinearLayout></LinearLayout>
Android-Studio简易手机通讯录相关推荐
- 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android
背景 如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android 应用程序? 运行调式一个Android项目,写下必要的代码后,接下来的任务是在模拟器或手机上运 ...
- Android Studio连接手机设备教程(完全步骤)
Android Studio连接手机设备教程 一.ADB环境配置 1.查看自己Android Studio配置的sdk路径 打开Android Studio后点击[File]->[Project ...
- Android Studio简易音乐播放器设计作业
Android Studio简易音乐播放器设计作业 实验成功展示 实验代码 MainActivity.java XML文件 class文件 利用BroadcastReceiver模拟音乐播放器,实现播 ...
- Android Studio连接手机和夜神模拟器
Android Studio连接手机 手机数据线连接电脑 打开手机的USB调试模式 Android Studio模拟器选择手机,运行 手机会出现对应的app应用下载界面,点击下载即可运行. Andro ...
- 测试新版Android Studio的手机镜像效果
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为669字,预计阅读2分钟 前言 春节刚上班,就开始了疯狂出差的节奏,期间发现Android Studio发布新的版本2022.1 ...
- android工程怎么连手机,android studio与手机连接调试步骤详解
android studio 版本不同连接手机方式有细微的不同,主要方式相似.介绍主要分手机和电脑两部分介绍. 一.手机部分 1.手机端下载一个"一键root权限获取",在安装的过 ...
- android studio模拟手机黑屏,Android studio 模拟器启动黑屏解决办法
React Native 端android环境搭建运行-简便过程(亲测) React Native 端android环境搭建运行-简便过程(亲测) 打开终端 1.下载brew,执行 /bin/zsh ...
- Android Studio连接手机详细教程(包含遇到的问题集)
Android Studio连接手机教程 一.配置Andriod Studio 1.安装Google USB Driver 在Android Studio主界面中,点击SDK Manager,进入An ...
- Android Studio运行手机框很大 屏幕很小的解决办法
关于Android Studio运行手机框很大 屏幕很小的解决办法 才开始接触移动软件开发,按照Android Studio安装教程相关博客安装过后,发生如图问题: 可以发现模拟器运行出来的结果是屏幕 ...
- Android Studio 创建手机虚拟机教程
小白 Android Studio创建手机虚拟机 版本 AndroidStudio 3.5.3 在APP开发中不一定每时每刻都有真机,所以可以通过AndroidStudio 创建一个手机虚拟机 1.创 ...
最新文章
- 从hook007学习dll劫持自启动方式
- Opencv--直线拟合
- java calendar clear_java.util.Calendar clear()方法
- 这个世界上不存在什么弯道超车,只存在正道超车
- 2019.02.19 bzoj2655: calc(生成函数+拉格朗日插值)
- 程序设计导引【总述】
- DCMTK各模块说明
- 记录一个SetupFactory使用手册
- 华硕Y450拆机清灰、拆下光驱助散热、卸载无用软件
- 还在用PPT做组织架构图?公司都在用的架构图软件是什么?
- 第十五章 输入/输出
- oppo手机注册服务器地址,oppo云登录服务器(oppo云服务登录入口)
- Exploring the Regularity of Sparse Structure in Convolutional Neural Networks(在卷积神经网络中探索稀疏结构的规律性)
- ur机械臂 控制器_UR机器人远程控制研究
- 模糊PID控制的规则表一点理解
- setFocus不能生效的问题
- 寂寞是因为思念谁(校园民谣)铃声 寂寞是因为思念谁(校园民谣)...
- 理财-股票(扫文章中的二维码下软件)
- 计算机网络,路由与交换技术经典实验整理总结
- python面板数据模型操作步骤_任何有效的方法来建立面板数据的回归模型?
热门文章
- 大数据安全目前面临得主要挑战有哪些
- python——爬虫学习——Beautiful Soup库的使用-(2)
- PostgreSQL无法连接Server(报错could not connect to server)
- 原神服务器维护后抽奖池会更新吗,原神抽奖记录会刷新吗
- socket send函数系列,彻底弄懂socket发送函数,可做参考手册
- 搬运工-AI知识介绍系列
- 笔记本电脑桌面计算机打不开怎么回事啊,笔记本电脑的声音打不开怎么办
- python开发环境搭建实训报告_20191302 实验一《Python程序设计》实验报告
- 爬虫--selenium爬取淘宝商品数据
- node将html转为pdf,将node.js中的html文件转换为pdf并将其写入磁盘