89.android获取联系人,并回传联系人数据(设置安全号码)
2017-03-22 01:58
316 查看
获取联系人,是从数据库中获取到联系人,首先将获取到的联系人放在LIstView然后在按钮上点击页面跳转事件,跳转到ListvIew,同时在上面添加点击setOnItemClickListener监听,来返回数据,返回数据的过程中最好结合requestCode来区分用户是否点击(有数据返回),当跳转返回的页面如果多了的时候,可以设置请求码,根据不同的请求码判断当前是请求的什么页面返回的数据。
设置输入的方式
联系人的界面activity_contact.xml
Setup3_activity.xml页面的布局,设置安全号码
Setup3Activity.java添加点击事件,监听返回的数据,没有写完安全号码不让跳转,同时把安全号码保存,下次进来的时候让保存的数据自动显示
士大夫
设置输入的方式
android:inputType="phone" //数字键盘
联系人的界面activity_contact.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 style="@style/TitleStyle" android:text="联系人页面" /> <ListView android:id="@+id/lv_list" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>ContactActivity.java用于显示联系人的ListView,同时监听每一条的点击事件,返回数据
package com.ldw.safe.Activity; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import com.ldw.safe.R; public class ContactActivity extends Activity { private ListView lvList; private ArrayList<HashMap<String, String>> readContact; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); lvList = (ListView) findViewById(R.id.lv_list); readContact = readContact(); System.out.println("HashMap" + readContact); lvList.setAdapter(new SimpleAdapter(this, readContact, R.layout.contact_list_item, new String[] {"name", "phone"}, new int[] { R.id.tv_name, R.id.tv_phone })); //给list设置监听,点击以后返回数据 lvList.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //读取联系人的电话号码,并返回数据到上一个页面 String phone = readContact.get(position).get("phone"); Intent intent = new Intent(); intent.putExtra("phone", phone); //回传resultCode区分是否选了选项 setResult(Activity.RESULT_OK, intent); //关闭页面 finish(); } }); } private ArrayList<HashMap<String, String>> readContact() { // 首先,从raw_contacts中读取联系人的id(contact_id) // 然后,根据contact_id从data中查询出相应的电话号码和联系人名称 // 再根据mimeType来区分数据的类型:号码,联系人 Uri rawContactsUri = Uri .parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); ArrayList<HashMa 4000 p<String, String>> list = new ArrayList<HashMap<String, String>>(); // raw_contacts中查询到contact_id Cursor rawContactCursor = getContentResolver().query(rawContactsUri, new String[] { "contact_id" }, null, null, null); if (rawContactCursor != null) { while (rawContactCursor.moveToNext()) { String contactId = rawContactCursor.getString(0); System.out.println("contactId" + contactId); // 根据contact_id从data表中查询出相应的电话号码和联系人的名称 Cursor dataCursor = getContentResolver().query(dataUri, new String[] { "data1", "mimetype" }, "contact_id = ?", new String[] { contactId }, null); if (dataCursor != null) { HashMap<String, String> map = new HashMap<String, String>(); while (dataCursor.moveToNext()) { String data1 = dataCursor.getString(0); String mimetype = dataCursor.getString(1); System.out.println("contactId" + contactId + "data1" + data1 + "mimetype" + mimetype); if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) { map.put("phone", data1); } else if ("vnd.android.cursor.item/name" .equals(mimetype)) { map.put("name", data1); } } list.add(map); dataCursor.close(); } } rawContactCursor.close(); } return list; } }
Setup3_activity.xml页面的布局,设置安全号码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ldw="http://schemas.android.com/apk/res/com.ldw.safe" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="3.设置安全号码" /> <TextView style="@style/ContentStyle" android:text="SIM卡变更后" /> <TextView style="@style/ContentStyle" android:text="报警短信会发送给安全号码" /> <EditText android:id="@+id/et_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:hint="请输入安全号码" /> <Button android:onClick="selectContact" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button" android:text="请选择联系人" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/bind" /> <Button style="@style/NextStyle" /> <Button style="@style/PreviousStyle" /> </RelativeLayout> </LinearLayout>
Setup3Activity.java添加点击事件,监听返回的数据,没有写完安全号码不让跳转,同时把安全号码保存,下次进来的时候让保存的数据自动显示
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.ldw.safe.R; /* * 手机防盗第三个设置向导页面 */ public class Setup3Activity extends BaseSetupActivity { private EditText etPhone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup3); etPhone = (EditText) findViewById(R.id.et_phone); String phone = mPref.getString("safe_phone", ""); etPhone.setText(phone); } //显示上一页,这个需要子类去实现,跳转的页面不是固定的 public void showPrevious(){ //页面跳转 startActivity(new Intent(Setup3Activity.this, Setup2Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画 } //显示下一页,这个需要子类去实现,跳转的页面不是固定的 public void showNext(){ //判断是否设置安全号码,trim来过滤空格 String phone = etPhone.getText().toString().trim(); if(TextUtils.isEmpty(phone)){ Toast.makeText(this, "安全号码不能是空", Toast.LENGTH_SHORT).show(); return; } //保存安全号码 mPref.edit().putString("safe_phone", phone).commit(); //页面跳转 startActivity(new Intent(Setup3Activity.this, Setup4Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画 } //选择联系人 public void selectContact(View v){ //跳转到ContactActivity界面,同时返回数据 Intent intent = new Intent(this, ContactActivity.class); startActivityForResult(intent, 0); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data){ //如果请求码是ok的时候才会去获取回传的数据 if(resultCode == Activity.RESULT_OK){ String phone = data.getStringExtra("phone"); //把电话号码里面的-去掉,并将空格去掉 phone = phone.replaceAll("-", "").replaceAll(" ", ""); //把返回的电话号码设置到输入框 etPhone.setText(phone);// } super.onActivityResult(requestCode, resultCode, data); } }
士大夫
相关文章推荐
- Android系统联系人数据表以及获取和写入(待写)
- Android如何获取系统联系人数据?
- Android 获取通讯录所有的联系人的方法 json打印的就是这些数据
- Android基础——NFC标签初始化设置、NFC标签读写数据和获取ID、NFC标签前台调度系统
- 赵雅智_android系统联系人app分析并获取数据
- Android:打开系统联系人界面并获取数据
- android:打开系统联系人界面并获取数据
- Android - xml动画,识别手势动作,代码抽取,获取手机SIM卡串号,获取联系人数据,开机广播,发送/解析短信,报警音乐
- AndroidContrentProvider 获取系统联系人数据。
- android中 如何设置控件获取焦点
- Android 获取通讯录联系人信息
- Android开发——获取应用数据/缓存大小并清理缓存
- Android传感器学习之加速度传感器数据获取
- Android Fragment 用命周期与 异步数据获取
- Android软件开发获取通讯录联系人信息
- Android:ContentProvider获取手机联系人列表
- Android 获取联系人和电话号码
- Android通过OpenCV获取摄像头帧数据并在悬浮框显示
- android 联系人获取号码类型
- android内容访问者+获取联系人信息