Android 添加联系人时如何不iphone 合并联系人显示

||||||||||||||||||
查看: 82944|回复: 9
在线时间76 小时经验值177 最后登录注册时间帖子阅读权限40UID1607424
高中生, 积分 177, 距离下一级还需 23 积分
该用户从未签到
G币158 最后登录注册时间
最近发现个很郁闷的问题,比如系统通讯录里面有张三这个人,后来我加了他微信,于是在微信通讯录里也会有张三这个人。但不知道微信用的什么黑科技,可以把自己的通讯录整合到系统通讯录里面去,于是在系统通讯录里面就会出现两个张三!而且无法真正删除,系统会提示说是“只读账户中的联系人无法彻底删除”,删掉了过会儿就又冒出来了。于是我的通讯录里大量的人存在两个,非常郁闷,求解决方法!
在线时间182 小时经验值212 最后登录注册时间帖子阅读权限50UID157481
大学专科, 积分 212, 距离下一级还需 188 积分
该用户从未签到
G币8 最后登录注册时间
通讯录里设置一下,微信通讯录不显示
在线时间320 小时经验值571 最后登录注册时间帖子阅读权限60UID772960
大学本科, 积分 568, 距离下一级还需 132 积分
该用户从未签到
G币34 最后登录注册时间
wuya_1974 发表于
通讯录里设置一下,微信通讯录不显示
给你32个赞,我也是这样弄的
在线时间295 小时经验值871 最后登录注册时间帖子阅读权限70UID201795
学士, 积分 871, 距离下一级还需 229 积分
TA的每日心情郁闷 11:20签到天数: 9 天[LV.3]偶尔看看II
G币10 最后登录注册时间
其实可以整合在一起的
在线时间76 小时经验值177 最后登录注册时间帖子阅读权限40UID1607424
高中生, 积分 177, 距离下一级还需 23 积分
该用户从未签到
G币158 最后登录注册时间
wuya_1974 发表于
通讯录里设置一下,微信通讯录不显示
好吧,我再说详细一点吧。主要是我开车时需要用语音拨号,微信整合过来的联系人“姓”和“名”都是分开保存的,而我的车是老外设计的,这样就出现一个问题,在车的中控上人名显示全都是反的,因为老外习惯名在前姓在后,比如我要呼叫“张三”,我就不能说“呼叫张三”,而得说“呼叫三张”,所以微信这个通讯簿整合功能搞得我很烦。
你说的在通讯簿里设置不显示微信联系人,无法解决问题,因为这样做只是“不显示”而已,实际通讯簿里还是有重复的人存在的,使用蓝牙语音呼叫的时候不反着念名字还是不行的。包括使用联系人合并功能也不行,因为这两个同名的联系人其实一个在google账号下,一个在微信账号下,合并功能只是把这两条信息合并在一起显示而已,本质上还是两条联系人信息。
我需要一个彻底的办法,就是通讯簿里根本就不要有微信联系人,而不是仅仅在显示上看不见或者在显示上合并到一起。
在线时间182 小时经验值212 最后登录注册时间帖子阅读权限50UID157481
大学专科, 积分 212, 距离下一级还需 188 积分
该用户从未签到
G币8 最后登录注册时间
本帖最后由 wuya_1974 于
17:23 编辑
keydeng 发表于
好吧,我再说详细一点吧。主要是我开车时需要用语音拨号,微信整合过来的联系人“姓”和“名”都是分开保 ...
这个应该是你的车子的问题,我的手机里显示所有的联系人包括GMAIL和微信还有QQ,只会显示一个,不会重复。我是5.0棒棒糖
你可以FQ,打开你的GMAIL,查看下你的联系人,看看姓和名是否分开,姓名是否颠倒,如果是的话就在GMAIL里编辑下,然后同步就好了
在线时间76 小时经验值177 最后登录注册时间帖子阅读权限40UID1607424
高中生, 积分 177, 距离下一级还需 23 积分
该用户从未签到
G币158 最后登录注册时间
本帖最后由 keydeng 于
17:34 编辑
wuya_1974 发表于
这个应该是你的车子的问题,我的手机里显示所有的联系人包括GMAIL和微信还有QQ,只会显示一个,不会重复 ...
这个我检查过了,gmail里的联系人都是正常的,姓和名都存在一个字段里就不会发生姓名颠倒的情况。但问题就在于微信整合过来的联系人,姓和名分开存,就会导致姓名颠倒。
我也是用5.0才发现原因的,之前用4.4的时候重复的联系人都是合并到一起显示的,每个人只有一条联系人信息,跟你现在的情况一样,而且显示出来的名字都是在一个字段里,但在车上就是姓名颠倒显示的,弄得我很长一段时间没发现问题的原因。昨天升级了5.0,再看通讯簿,这次没有合并显示,一个人有两条联系人信息,然后我分别看了才发现原因,虽然是同名的两个联系人,但一条是姓名保存在一个字段,另一条是姓名分开保存在两个字段,所以才导致车上姓名显示颠倒的。
我现在就在想,怎么才能让微信的联系人不要整合到系统通讯簿,这个问题折磨了我好长时间了,今天找到了原因,到找不到解决方法,郁闷啊。
在线时间4 小时经验值1515 最后登录注册时间帖子阅读权限80UID
研究生, 积分 1515, 距离下一级还需 185 积分
TA的每日心情开心 21:07签到天数: 898 天[LV.10]以坛为家III
G币2476 最后登录注册时间
wuya_1974 发表于
通讯录里设置一下,微信通讯录不显示
怎么设置?能否解释的具体一点,谢谢了!
在线时间672 小时经验值1472 最后登录注册时间帖子阅读权限80UID3280032
研究生, 积分 1472, 距离下一级还需 228 积分
TA的每日心情开心 18:09签到天数: 85 天[LV.6]常住居民II
G币520 最后登录注册时间
我也被这问题困扰很久了,我用微信备份联系人的时候居然把微信联系人也备份到网上了,每次新系统恢复联系人的时候自动恢复微信联系人,搞得我通讯录很多重复的姓名……
在线时间14 小时经验值1014 最后登录注册时间帖子阅读权限70UID7434201
学士, 积分 1014, 距离下一级还需 86 积分
TA的每日心情擦汗 08:45签到天数: 733 天[LV.9]以坛为家II
G币2085 最后登录注册时间
我用百度云备份通讯录 可以在电脑网页端 更改试试!!
浏览过的版块
Powered by单片机、电路板
连接器、接插件
其他元器件
android 添加联系人
android 添加联系人
  ContentValues values = new ContentValues();  values.put(People.NAME, tmp[0]);  Uri uri=Contacts.People.createPersonInMyContactsGroup(contactResolver, values);  Uri myUri=Uri.withAppendedPath(uri, Co
  ContentValues values = new ContentValues();  values.put(People.NAME, tmp[0]);  Uri uri=Contacts.People.createPersonInMyContactsGroup(contactResolver, values);  Uri myUri=Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);  values.clear();  values.put(Contacts.Phones.TYPE, Phones.NUMBER);  values.put(People.NUMBER,tmp[1]);  contactResolver.insert(myUri, values);
型号/产品名
深圳优耐检测技术有限公司
深圳优耐检测技术有限公司
深圳优耐检测技术有限公司
深圳优耐检测技术有限公司
深圳优耐检测技术有限公司Android手机联系人源码(添加联系人页面一个功能)修改
在添加联系人页面,源代码中,当点击添加电话时,下面会自动弹出一个“添加其他选项”,经过修改取消这个选项。
修改步骤如下:
public class KindSectionView extends LinearLayout implements EditorListener
在上面的类中其中包含 其mAddFieldFooter = findViewById(R.id.add_field_footer);
此布局是包含弹出“添加其他选项的布局”页面的布局,
在它mAddFieldFooter.setOnClickListener(new OnClickListener() 的监听器方法里面有
调用了addItem();方法
在addItem();此方法是添加新的页面方法。但是其要改的布局加载并不在其里面
其主要代码是在protected void updateAddFooterVisible(boolean animate) 方法里面完成的
在此方法中 调用了 if (animate) {
EditorAnimator.getInstance().showAddFieldFooter(mAddFieldFooter);
mAddFieldFooter.setVisibility(View.VISIBLE);
其中的showAddFieldFooter(mAddFieldFooter)中传递的参数正式我们想好修改的布局,那么好的我们这次进入
showAddFieldFooter(mAddFieldFooter)方法 看能不能找到我们想要改的部分布局
进入方法 我们了一发现public void showAddFieldFooter(final View view)
这里的参数iew 是我们传递过来的咱们修要
修改的布局,我们接下看代码
f (view.getVisibility() == View.VISIBLE)
// Make the new controls visible and do one layout pass (so that we can measure)
view.setVisibility(View.VISIBLE);
我们仔细读代码不难发现上句代码就是设置我们想改的布局的可见性的,所以我们只需要修改这句代码即可
//取消联系人中在点击添加电话时,添加新的项目的模块
view.setVisibility(View.GONE);
没有更多推荐了,在Android4.0中Contacts添加联系人界面分析(源码)
ContactsAndroid4.0setContentView
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1 1&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
ActivityManagerlogContactEditorActivity
onCreate(R.layout.)setContentViewcontact_editor_activity.xmlScrollViewfragmentfragmentContactEditorFragmentonCreateViewfinal View view =
inflater.inflate(R.layout.contact_editor_fragment, container,
false),contact_editor_fragment.xmlFrameLayoutScrollViewideditorsLinearLayoutonCreateView& mContent =
(LinearLayout) view.findViewById(R.id.editors)onCreatebindEditors()mContenteditorsmContent.removeAllViews()1final LayoutInflater inflater = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
BaseRawContactEditorView
editor = (BaseRawContactEditorView) inflater.inflate(
&&&&&&&&&&&&&&&&&
R.layout.raw_contact_readonly_editor_view, mContent,
((RawContactReadOnlyEditorView)
editor).setListener(this);
editor=(RawContactEditorView) inflater.inflate(R.layout.,
&&&&&&&&&&&&&&&&&&&&&&&
mContent, false);
logtype.areContactsWritable()trueelsecom.android.contacts.editor.RawContactEditorView3sect_fieldsraw_contact_editor_view.xml
.javaonFinishInflate() =
(ViewGroup)findViewById(R.id.sect_fields)mFieldsContactEditorFragmentbindEditorsmContenteditor.(entity, type, mViewIdGenerator,
isEditingUserProfile())editorRawContactEditorViewRawContactEditorViewsetState
mFields.removeAllViews()view
mGroupMembershipViewGroup
SectionorganizationView
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android添加联系人信息并读取
Android添加联系人信息并读取
1. 创建一个File文件,路径为/mnt/sdcard/temp/zhiyuan.txt
2. 进入主页面后自动从File文件中读取联系人数据,每个item只显示,姓名和电话。如果,你在添加联系人时,填写了备注,那么item的姓名显示成你保存的备注。否则显示姓名。
添加联系人功能,布局最上方有一个添加联系人按钮,下面是ListView, 当点击添加联系人按钮时,跳转至新页面,输入姓名,电话,备注(电话和
姓名不能为空,电话只能为数字)。确定后保存File文件,并且直接回退到 主页面
4. 当点击每个item时,跳转至详细页面,显示当前联系人的名字、电话、 备注。
1.新建一个Module命名为AndroidContact
在XML布局文件activity_main中添加一个Button按钮命名为添加联系人信息
再添加一个ListView用于显示接收的联系人信息
2.新建一个activity_item行布局文件用于将联系人信息以行布局的形式显示在ListView列表上
并添加两个TextView用于显示联系人姓名和电话
3.新建一个AddActivity类用于跳转添加联系人信息
再新建一个DetialActivity类用于跳转显示联系人信息详情
4.在XML布局文件activity_add中添加三个EditText用于输入联系人姓名,电话,备注
再添加一个Button用于将输入的联系人信息保存到File文件中
5.在AddActivity中实例化EditText控件,Button控件,并给Button添加监听
在监听中实例化File对象,参数为路径名
判断文件是否存在,如果存在则存储数据并且追加数据属性
把文件 保存置为追加,true为追加
添加一个判断,如果联系人姓名,电话的内容不为空,则存储,备注信息可以为空
使用Toast提示存储是否成功
使用Finish();属性销毁页面返回主类
package com.example.cxy.
import android.os.B
import android.support.v7.app.AppCompatA
import android.text.TextU
import android.view.V
import android.widget.B
import android.widget.EditT
import android.widget.T
import java.io.F
import java.io.FileOutputS
import java.io.IOE
public class AddActivity extends AppCompatActivity implements View.OnClickListener {
private EditText ed_Name, ed_Phone, ed_Remark;
private Button btn_Save;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
initView();
private void initView() {
ed_Name = (EditText) findViewById(R.id.editName);
ed_Phone = (EditText) findViewById(R.id.editPhone);
ed_Remark = (EditText) findViewById(R.id.editRemark);
btn_Save = (Button) findViewById(R.id.btn_save);
btn_Save.setOnClickListener(this);
public void onClick(View v) {
//判断文件是否存在,如果存在则存入数据,且为追加属性
File file = new File("/mnt/sdcard/contact/contact.txt");
if (!file.exists()) {
file = new File("/mnt/sdcard/contact");
file.mkdir();
file = new File("/mnt/sdcard/contact/contact.txt");
file.createNewFile();
//把你的文件保存置为追加。true则为追加
FileOutputStream out = new FileOutputStream(file, true);
//如果文本内容不为空,则存储
if (!(TextUtils.isEmpty(ed_Name.getText().toString()) || TextUtils.isEmpty(ed_Phone.getText().toString()))) {
String person = ed_Name.getText().toString() + "," + ed_Phone.getText().toString() + "," + ed_Remark.getText().toString() + "#";
out.write(person.getBytes());
out.close();
Toast.makeText(AddActivity.this, "存储成功", Toast.LENGTH_SHORT).show();
//页面销毁,返回主类
Toast.makeText(AddActivity.this, "存储失败", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
6.新建一个Package包命名为adapter
在包中新建一个MyAdapter类用于给列表添加适配器
7.在MyAdapter类中编写一个私有的上下文对象(Context)和一个私有的List&Map&String,String&&mList;集合
构造一个List&Map&String,String&&mL集合和Context上下文对象的有参构造方法
并使本类继承于BaseAdapter类(public
class MyAdapter extends BaseAdapter)
将获取列表总长度的getCount()方法的返回值改为mList.size()返回全局的列表总长度
将获取当前整个Item的getItem()方法的返回值改为mList.get(position)返回一个当前视图中所有数据的下标
将获取当前Item的id的getItemId()方法的返回值改为position()返回Id的下标
将获取视图的getView()方法的返回值改为converView()返回当前视图给用户看
创建一个ViewHolder内部类对象用于声明activity_item行布局的TextView控件
创建ViewHodler类对象
添加判断当前converView是否为空如果为空则加载新的Item行布局
实例化ViewHodler并通过视图寻找控件Id
设置converView缓存标签,并传入控件
从converView视图中获取缓存标签
将对应下标的值赋给对应位置
添加判断如果联系人备注为空则显示电话,如果不为空则在电话位置显示备注
package com.example.cxy.androidcontact.
import android.content.C
import android.text.TextU
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.BaseA
import android.widget.TextV
import com.example.cxy.androidcontact.R;
import java.util.L
import java.util.M
* Created by admin on .
public class MyAdapter extends BaseAdapter {
private Context mContext;
private List&Map&String, String&& mList;
//有参构造方法
public MyAdapter(Context context, List&Map&String, String&& list) {
mContext =
//获取列表总长度
public int getCount() {
//返回一个全局的列表的总长度
return mList.size();
//获取当前整个item(一整行)返回一个当前视图中的所有数据
public Object getItem(int position) {
//返回下标
return mList.get(position);
//获取当前item的ID
public long getItemId(int position) {
//返回下标
//获取视图
当前视图下标
指当前视图
上级父容器
public View getView(int position, View convertView, ViewGroup parent) {
//创建一个ViewHodler类对象
ViewHodler viewH
//判断当前converView是否为空,如果为空
if (convertView == null) {
//则加载新的item行布局
convertView = LayoutInflater.from(mContext).inflate(R.layout.activity_item, null);
//实例化viewHodler
viewHodler = new ViewHodler();
//通过视图寻找控件ID
viewHodler.tvName = (TextView) convertView.findViewById(R.id.tv_Name);
viewHodler.tvPhone = (TextView) convertView.findViewById(R.id.tv_Phone);
//设置convertView缓存标签,传入控件
convertView.setTag(viewHodler);
//从convertView视图中获取缓存的标签
viewHodler = (ViewHodler) convertView.getTag();
//将对应下标的值赋给对应位置
viewHodler.tvName.setText(mList.get(position).get("name"));
//如果联系人备注为空则显示电话,如果不为空则在电话位置显示备注
if (TextUtils.isEmpty(mList.get(position).get("remark"))) {
viewHodler.tvPhone.setText(mList.get(position).get("phone"));
viewHodler.tvPhone.setText(mList.get(position).get("remark"));
//返回当前converView视图给用户看
return convertV
//自定义内部类ViewHolder
class ViewHodler {
private TextView tvName, tvPhone;
8.在主类MainActivity中创建私有的Button控件,ListView控件,List集合,Map集合
adapter适配器
使用initView方法初始化控件和List集合
在initView方法中实例化List数组,实例化Button按钮和ListView控件,并给Button按钮和ListView列表控件添加监听点击事件
在Button按钮的点击事件中添加跳转,跳转至AddActivity类
在ListView控件的点击事件中添加跳转,跳转至DetialActivity类,并将联系人信息传输到DetialActivity详情类
添加一个writeFile方法用于从File文件中读取数据
实例化File对象,参数为路径名
添加判断如果文件存在则读取,不存在则不读取
输出File文件中的内容
定义byte[]字节数组,使用available方法读取文件中存储的信息长度
调用read方法将bytes数组中的数据读取
关闭输出流
把文件中读取到的内容全部转化为字符串
先用#号将每个人分割
使用循环将单个联系人的三个属性分开
使用split分割将person数组中的信息用逗号分开
实例化Map集合
使用循环输出信息
添加onResume方法使每次进入先清理集合,然后再次获取数据
并且如果适配器没有实例化,则实例化,否则则刷新
package com.example.cxy.
import android.content.I
import android.support.v7.app.AppCompatA
import android.os.B
import android.view.V
import android.widget.AdapterV
import android.widget.B
import android.widget.ListV
import com.example.cxy.androidcontact.adapter.MyA
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.IOE
import java.util.ArrayL
import java.util.HashM
import java.util.L
import java.util.M
public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener {
private Button btn_add;
private ListView mListView;
private List&Map&String, String&& mList;
private Map&String, String& mMap;
private MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件和List集合的方法
initview();
//从文件中读取数据的方法
private void writeFile() {
//实例化File对象,参数为路径名
File file = new File("/mnt/sdcard/contact/contact.txt");
//判断文件是否存在,存在则读取,不存在的不读取
if (file.exists()) {
//将File文件输出
FileInputStream input = new FileInputStream(file);
//定义byte[]字节数组,使用available方法读取文件中存储的信息长度
byte[] bytes = new byte[input.available()];
//调用read方法将bytes数组中的数据读取
input.read(bytes);
//关闭输出流
input.close();
//把文件中读取到的内容全部转化为字符串
String content = new String(bytes);
//先以#号分割为每一个人
String[] person = content.split("#");
//使用循环把每一个人的三个属性分开
for (int i = 0; i & person.length; i++) {
//使用split分割将person数组中的信息用逗号分隔开
String[] split = person[i].split(",");
mMap = new HashMap&&();
//使用循环输出信息
for (int x = 0; x & split.length; x++) {
if (x == 0) {
mMap.put("name", split[x]);
} else if (x == 1) {
mMap.put("phone", split[x]);
} else if (x == 2) {
mMap.put("remark", split[x]);
//存放集合
mList.add(mMap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
private void initview() {
mList = new ArrayList&&();
btn_add = (Button) findViewById(R.id.btn_add);
mListView = (ListView) findViewById(R.id.listView);
btn_add.setOnClickListener(this);
mListView.setOnItemClickListener(this);
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(this, AddActivity.class);
startActivity(intent);
public void onItemClick(AdapterView&?& parent, View view, int position, long id) {
Intent intent = new Intent();
intent.setClass(this, DetialActivity.class);
//将联系人信息传到DetialActivity类中
intent.putExtra("name", mList.get(position).get("name"));
intent.putExtra("phone", mList.get(position).get("phone"));
intent.putExtra("remark", mList.get(position).get("remark"));
startActivity(intent);
//此方法,每次进入先清理集合,然后再次获取数据,
//并且如果适配器没有实例化,则实例化,否则则刷新
protected void onResume() {
super.onResume();
mList.clear();
writeFile();
if (adapter != null) {
adapter.notifyDataSetChanged();
adapter = new MyAdapter(this, mList);
mListView.setAdapter(adapter);
9.在XML布局文件activity_detial中添加三个TextView用于展示联系人姓名,电话,备注
10.在DetialActivity类中实例化TextView
添加initView方法,初始化控件
在initView方法中实例化TextView控件
定义一个字符串接收MainActivity所传输的联系人姓名,电话,备注
将接收的联系人姓名,电话,备注显示在TextView中
package com.example.cxy.
import android.content.I
import android.support.v7.app.AppCompatA
import android.os.B
import android.widget.TextV
public class DetialActivity extends AppCompatActivity {
private TextView tv_Name, tv_Phone, tv_Remark;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detial);
initView();
private void initView() {
tv_Name = (TextView) findViewById(R.id.tvName);
tv_Phone = (TextView) findViewById(R.id.tvPhone);
tv_Remark = (TextView) findViewById(R.id.tvRemark);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
String phone = intent.getStringExtra("phone");
String remark = intent.getStringExtra("remark");
tv_Name.setText(name);
tv_Phone.setText(phone);
tv_Remark.setText(remark);
没有更多推荐了,}

我要回帖

更多关于 iphone合并重复联系人 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信