手机qq一键添加通讯录好友友添加跟添加到手机通讯录是一样吗

iphone版微信如何从手机通讯录添加好友 - iPhone使用技巧 - 电脑百事网
手机扫描二维码
iphone版微信如何从手机通讯录添加好友
来源:电脑百事网
编辑:admin
在微信的添加朋友里可以从手机的通讯录上添加,下面介绍一下如何用在iPhone手机通讯录里添加好友的方法。
一、首先打开&微信&应用,然后点击屏幕底端的&通讯录&选项,如下图标注所示
iphone版微信如何从手机通讯录添加好友
二、然后点屏幕右上角的&添加&按钮,如下图所示
iphone版微信如何从手机通讯录添加好友
三、接下来会看到有很多种添加朋友的方法,点击&从手机通讯录列表添加&选项,如下图所示
iphone版微信如何从手机通讯录添加好友
四、然后软件会列出手机通讯录里所有的联系人列表,选择想要添加的朋友,点击联系人右边的&添加&按钮,如下图所示
iphone版微信如何从手机通讯录添加好友
五、接下来就会看到添加朋友的详细资料,再点击&添加到通讯录&选项,如下图所示
iphone版微信如何从手机通讯录添加好友
提示:支持键盘“← →”键翻页【求助】kakao自动添加手机通讯录好友,好友会收到添加的消息吗_kakaotalk吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:25,738贴子:
【求助】kakao自动添加手机通讯录好友,好友会收到添加的消息吗收藏
求助kakao吧的大神帮忙~~~~~
纸屏这一本,联想YOGA系列全新笔记本张天爱期待与你相遇,官网立即购买!
kakao自动添加手机通讯录好友,好友会收到添加的消息吗?一不小心点了自动添加,添加了很多手机号的好友,当然也有不熟悉人或领导之类的。感到很不舒服,我想问下,我自动添加好友,他们是否收到了我的申请消息或通知?????
求助大神帮忙啊
我也想知道
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或手机QQ是由腾讯公司打造的移动互联网领航级手机应用,目前已经全...
本类热门推荐
本站所有内容均来源于互联网,本站不负任何法律责任,如果侵犯您的版权,请及时告知我们 ,我们将在收到通知后72小时内删除
牛游戏网提供游戏(包括单机游戏,电视游戏,手机游戏,网页游戏,网络游戏等)资讯,下载,攻略,补丁,始终站在 的最前沿
CopyRight(C) WWW.NEWYX.NET All Right Reserved 湘ICP备号
牛游戏网温馨提示:适度游戏娱乐 沉迷游戏伤身 合理安排时间 享受单机游戏推荐到广播
617565 人聚集在这个小组
第三方登录:android移动开发(42)
获取手机通讯录加好友
工作用到的在app访问通讯录,获取好友信息,发邀请给好友,请求加好友,
类似微信的通讯录加好友效果,简单贴一些代码。
&span style=&font-size:18&&&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:background=&@drawable/selector_base_bg&
android:gravity=&center_vertical&
android:orientation=&vertical& &
android:id=&@+id/catalog&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:layout_weight=&1.0&
android:background=&#E0E0E0&
android:paddingBottom=&5dip&
android:paddingLeft=&5dip&
android:paddingTop=&5dip&
android:text=&A&
android:textColor=&#454545& /&
&LinearLayout
android:layout_width=&fill_parent&
android:layout_height=&45dp&
android:orientation=&horizontal&
android:gravity=&center_vertical&
&ImageView
android:id=&@+id/faceImg&
android:layout_width=&35dip&
android:layout_height=&35dip&
android:src=&@drawable/ic_launcher&
android:layout_margin=&5dip&
android:id=&@+id/title&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:layout_gravity=&center_vertical&
android:layout_marginLeft=&3dip&
android:layout_weight=&1.0&
android:gravity=&center_vertical&
android:textSize=&@dimen/common_textsize_middle&
android:text=&&
android:textColor=&@color/setting_textview& /&
android:id=&@+id/moreBtn&
android:layout_width=&60dp&
android:layout_height=&38dp&
android:background=&@drawable/btn_shape_bg8&
android:textColor=&@color/setting_textview&
android:text=&邀 请&
android:layout_marginRight=&5dp&
&/LinearLayout&
&/LinearLayout&&/span&
Activity:
&span style=&font-size:18&&public class MyPhoneContactActivity extends TopBaseActivity {
public static final String ID = &id&;
public static final String NAME = &name&;
public static final String NUMBER = &number&;
public static final String SORT_KEY = &sort_key&;
public static final int TOKEN_ONCREATE = 0;
private AsyncQueryHandler asyncQ
private final static String TAG = MyFriendActivity.class.getSimpleName();
private MyLogger mylogger = MyLogger.getLogger();
private ListView sortListV
private SideBar sideB
private TextV
private PhoneContactAdapter mA
private List&ContentValues& sourceDateL
private ClearEditText mClearEditT
private CharacterParser characterP
public String getTopTitle() {
return &通讯录&;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_phone_contact);
initViews();
private void initViews() {
characterParser = CharacterParser.getInstance();
sideBar = (SideBar) findViewById(R.id.sidrbar);
dialog = (TextView) findViewById(R.id.dialog);
sideBar.setTextView(dialog);
sortListView = (ListView) findViewById(R.id.country_lvcountry);
mClearEditText = (ClearEditText) findViewById(R.id.filter_edit);
asyncQuery = new MyAsyncQueryHandler(getContentResolver());
// 获取手机联系人
getContacts(TOKEN_ONCREATE);
* 异步查询所有联系人
* @param int
private void getContacts(int token) {
String[] projection = {
monDataKinds.Phone.CONTACT_ID,
monDataKinds.Phone.DISPLAY_NAME,
monDataKinds.Phone.NUMBER,
monDataKinds.Phone.TYPE, &sort_key& };
asyncQuery.startQuery(token, null,
monDataKinds.Phone.CONTENT_URI, projection,
null, null, &sort_key COLLATE LOCALIZED asc&);
* 异步获取通讯录
private class MyAsyncQueryHandler extends AsyncQueryHandler {
public MyAsyncQueryHandler(ContentResolver cr) {
super(cr);
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
if (cursor != null && cursor.getCount() & 0) {
sourceDateList = new ArrayList&ContentValues&();
int preID = 0;
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
if (id != preID) {
ContentValues cv = new ContentValues();
String name = cursor.getString(1);
String number = cursor.getString(2);
String sortKey = cursor.getString(4);
int typePhone = monDataKinds.Phone
.getTypeLabelResource(cursor.getInt(3));
cv.put(ID, id);
cv.put(NAME, name);// 名字
cv.put(NUMBER, getString(typePhone) + &:& + number);// 手机号
cv.put(SORT_KEY, sortKey);
sourceDateList.add(cv);
ContentValues contentValue = sourceDateList
.get(sourceDateList.size() - 1);
ContentValues cv = new ContentValues();
String name = cursor.getString(1);
String number = cursor.getString(2);
String sortKey = cursor.getString(4);
int typePhone = monDataKinds.Phone
.getTypeLabelResource(cursor.getInt(3));
cv.put(ID, id);
cv.put(NAME, name);
cv.put(NUMBER, contentValue.getAsString(NUMBER) + &\n&
+ getString(typePhone) + &:& + number);
cv.put(SORT_KEY, sortKey);
sourceDateList.remove(sourceDateList.size() - 1);
sourceDateList.add(cv);
if (sourceDateList.size() & 0) {
mAdapter = new PhoneContactAdapter(
MyPhoneContactActivity.this, sourceDateList);
sortListView.setAdapter(mAdapter);
// 设置右侧触摸监听
sideBar.setOnTouchingLetterChangedListener(new OnTouchingLetterChangedListener() {
public void onTouchingLetterChanged(String s) {
if (mAdapter.getCount() & 0) {
// 该字母首次出现的位置
int position = mAdapter.getPositionForSection(s
.charAt(0));
if (position != -1) {
sortListView.setSelection(position);
// 根据输入框输入值的改变来过滤搜索
mClearEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// 当输入框里面的值为空,更新为原来的列表,否则为过滤数据列表
filterData(s.toString());
public void beforeTextChanged(CharSequence s,
int start, int count, int after) {
public void afterTextChanged(Editable s) {
cursor.close();
* 根据输入框中的值来过滤数据并更新ListView
* @param filterStr
private void filterData(String filterStr) {
List&ContentValues& filterDateList = new ArrayList&ContentValues&();
if (TextUtils.isEmpty(filterStr)) {
filterDateList = sourceDateL
filterDateList.clear();
for (ContentValues sortModel : sourceDateList) {
String name = sortModel
.getAsString(MyPhoneContactActivity.NAME);
if (name.indexOf(filterStr.toString()) != -1
|| characterParser.getSelling(name).startsWith(
filterStr.toString())) {
filterDateList.add(sortModel);
// 根据a-z进行排序
// Collections.sort(filterDateList, pinyinComparator);
mAdapter.updateListView(filterDateList);
&span style=&font-size:18&&public class PhoneContactAdapter extends BaseAdapter implements SectionIndexer {
private List&ContentValues& list =
private Context mC
public PhoneContactAdapter(Context mContext, List&ContentValues& list) {
this.mContext = mC
this.list =
* 当ListView数据发生变化时,调用此方法来更新ListView
* @param list
public void updateListView(List&ContentValues& list) {
this.list =
notifyDataSetChanged();
public int getCount() {
return this.list.size();
public Object getItem(int position) {
return list.get(position);
public long getItemId(int position) {
public View getView(final int position, View view, ViewGroup arg2) {
ViewHolder viewHolder =
final ContentValues cv = list.get(position);
if (view == null) {
viewHolder = new ViewHolder();
view = LayoutInflater.from(mContext).inflate(
R.layout.item_phone_contact_sort, null);
viewHolder.tvTitle = (TextView) view.findViewById(R.id.title);// 显示联系人名字
viewHolder.tvLetter = (TextView) view.findViewById(R.id.catalog);// 显示分类拼音
viewHolder.faceImg = (ImageView) view.findViewById(R.id.faceImg);// 显示联系人头像
viewHolder.moreBtn = (Button) view.findViewById(R.id.moreBtn);
view.setTag(viewHolder);
viewHolder = (ViewHolder) view.getTag();
String number = cv.getAsString(MyPhoneContactActivity.NUMBER);
String name = cv.getAsString(MyPhoneContactActivity.NAME);// 名字
// 根据position获取分类的首字母的Char ascii值
int section = getSectionForPosition(name);
// 如果当前位置等于该分类首字母的Char的位置 ,则认为是第一次出现
if (position == getPositionForSection(section)) {
viewHolder.tvLetter.setVisibility(View.VISIBLE);
viewHolder.tvLetter.setText(getContactAlpha(name));
viewHolder.tvLetter.setVisibility(View.GONE);
viewHolder.tvTitle.setText(name);
// ImageLoader.getInstance().displayImage(mContent.T_face,
// viewHolder.faceImg);
final static class ViewHolder {
TextView tvL
TextView tvT
ImageView faceI
Button moreB
* 根据ListView的当前位置获取分类的首字母的Char ascii值
public int getSectionForPosition(String name) {
return getContactAlpha(name).charAt(0);
* 根据分类的首字母的Char ascii值获取其第一次出现该首字母的位置
public int getPositionForSection(int section) {
for (int i = 0; i & getCount(); i++) {
String sortStr = getContactAlpha(list.get(i).getAsString(
MyPhoneContactActivity.NAME));
char firstChar = sortStr.toUpperCase().charAt(0);
if (firstChar == section) {
return -1;
* 提取英文的首字母,非英文字母用#代替。
* @param str
private String getAlpha(String str) {
String sortStr = str.trim().substring(0, 1).toUpperCase();
// 正则表达式,判断首字母是否是英文字母
if (sortStr.matches(&[A-Z]&)) {
return sortS
return &#&;
// 获得汉语拼音首字母
private String getContactAlpha(String str) {
if (str == null || str.trim().length() == 0) {
return &#&;
StringBuffer pybf = new StringBuffer();
char[] arr = str.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
if (arr[0] & 128) {
String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[0],
defaultFormat);
if (_t != null) {
pybf.append(_t[0].charAt(0));
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
pybf.append(arr[0]);
return pybf.toString().toUpperCase().trim();
public Object[] getSections() {
public int getSectionForPosition(int arg0) {
会用到一个处理中文拼音的类:
&span style=&font-size:18&&
* 解析拼音
public class CharacterParser {
private static int[] pyvalue = new int[] { -20319, -20317, -20304, -20295,
-20292, -20283, -20265, -20257, -20242, -20230, -20051, -20036,
-20032, -20026, -20002, -19990, -19986, -19982, -19976, -19805,
-19784, -19775, -19774, -19763, -19756, -19751, -19746, -19741,
-19739, -19728, -19725, -19715, -19540, -19531, -19525, -19515,
-19500, -19484, -19479, -19467, -19289, -19288, -19281, -19275,
-19270, -19263, -19261, -19249, -19243, -19242, -19238, -19235,
-19227, -19224, -19218, -19212, -19038, -19023, -19018, -19006,
-19003, -18996, -18977, -18961, -18952, -18783, -18774, -18773,
-18763, -18756, -18741, -18735, -18731, -18722, -18710, -18697,
-18696, -18526, -18518, -18501, -18490, -18478, -18463, -18448,
-18447, -18446, -18239, -18237, -18231, -18220, -18211, -18201,
-18184, -18183, -18181, -18012, -17997, -17988, -17970, -17964,
-17961, -17950, -17947, -17931, -17928, -17922, -17759, -17752,
-17733, -17730, -17721, -17703, -17701, -17697, -17692, -17683,
-17676, -17496, -17487, -17482, -17468, -17454, -17433, -17427,
-17417, -17202, -17185, -16983, -16970, -16942, -16915, -16733,
-16708, -16706, -16689, -16664, -16657, -16647, -16474, -16470,
-16465, -16459, -16452, -16448, -16433, -16429, -16427, -16423,
-16419, -16412, -16407, -16403, -16401, -16393, -16220, -16216,
-16212, -16205, -16202, -16187, -16180, -16171, -16169, -16158,
-16155, -15959, -15958, -15944, -15933, -15920, -15915, -15903,
-15889, -15878, -15707, -15701, -15681, -15667, -15661, -15659,
-15652, -15640, -15631, -15625, -15454, -15448, -15436, -15435,
-15419, -15416, -15408, -15394, -15385, -15377, -15375, -15369,
-15363, -15362, -15183, -15180, -15165, -15158, -15153, -15150,
-15149, -15144, -15143, -15141, -15140, -15139, -15128, -15121,
-15119, -15117, -15110, -15109, -14941, -14937, -14933, -14930,
-14929, -14928, -14926, -14922, -14921, -14914, -14908, -14902,
-14894, -14889, -14882, -14873, -14871, -14857, -14678, -14674,
-14670, -14668, -14663, -14654, -14645, -14630, -14594, -14429,
-14407, -14399, -14384, -14379, -14368, -14355, -14353, -14345,
-14170, -14159, -14151, -14149, -14145, -14140, -14137, -14135,
-14125, -14123, -14122, -14112, -14109, -14099, -14097, -14094,
-14092, -14090, -14087, -14083, -13917, -13914, -13910, -13907,
-13906, -13905, -13896, -13894, -13878, -13870, -13859, -13847,
-13831, -13658, -13611, -13601, -13406, -13404, -13400, -13398,
-13395, -13391, -13387, -13383, -13367, -13359, -13356, -13343,
-13340, -13329, -13326, -13318, -13147, -13138, -13120, -13107,
-13096, -13095, -13091, -13076, -13068, -13063, -13060, -12888,
-12875, -12871, -12860, -12858, -12852, -12849, -12838, -12831,
-12829, -12812, -12802, -12607, -12597, -12594, -12585, -12556,
-12359, -12346, -12320, -12300, -12120, -12099, -12089, -12074,
-12067, -12058, -12039, -11867, -11861, -11847, -11831, -11798,
-11781, -11604, -11589, -11536, -11358, -11340, -11339, -11324,
-11303, -11097, -11077, -11067, -11055, -11052, -11045, -11041,
-11038, -11024, -11020, -11019, -11018, -11014, -10838, -10832,
-10815, -10800, -10790, -10780, -10764, -10587, -10544, -10533,
-10519, -10331, -10329, -10328, -10322, -10315, -10309, -10307,
-10296, -10281, -10274, -10270, -10262, -10260, -10256, -10254 };
public static String[] pystr = new String[] { &a&, &ai&, &an&, &ang&, &ao&,
&ba&, &bai&, &ban&, &bang&, &bao&, &bei&, &ben&, &beng&, &bi&,
&bian&, &biao&, &bie&, &bin&, &bing&, &bo&, &bu&, &ca&, &cai&,
&can&, &cang&, &cao&, &ce&, &ceng&, &cha&, &chai&, &chan&, &chang&,
&chao&, &che&, &chen&, &cheng&, &chi&, &chong&, &chou&, &chu&,
&chuai&, &chuan&, &chuang&, &chui&, &chun&, &chuo&, &ci&, &cong&,
&cou&, &cu&, &cuan&, &cui&, &cun&, &cuo&, &da&, &dai&, &dan&,
&dang&, &dao&, &de&, &deng&, &di&, &dian&, &diao&, &die&, &ding&,
&diu&, &dong&, &dou&, &du&, &duan&, &dui&, &dun&, &duo&, &e&, &en&,
&er&, &fa&, &fan&, &fang&, &fei&, &fen&, &feng&, &fo&, &fou&, &fu&,
&ga&, &gai&, &gan&, &gang&, &gao&, &ge&, &gei&, &gen&, &geng&,
&gong&, &gou&, &gu&, &gua&, &guai&, &guan&, &guang&, &gui&, &gun&,
&guo&, &ha&, &hai&, &han&, &hang&, &hao&, &he&, &hei&, &hen&,
&heng&, &hong&, &hou&, &hu&, &hua&, &huai&, &huan&, &huang&, &hui&,
&hun&, &huo&, &ji&, &jia&, &jian&, &jiang&, &jiao&, &jie&, &jin&,
&jing&, &jiong&, &jiu&, &ju&, &juan&, &jue&, &jun&, &ka&, &kai&,
&kan&, &kang&, &kao&, &ke&, &ken&, &keng&, &kong&, &kou&, &ku&,
&kua&, &kuai&, &kuan&, &kuang&, &kui&, &kun&, &kuo&, &la&, &lai&,
&lan&, &lang&, &lao&, &le&, &lei&, &leng&, &li&, &lia&, &lian&,
&liang&, &liao&, &lie&, &lin&, &ling&, &liu&, &long&, &lou&, &lu&,
&lv&, &luan&, &lue&, &lun&, &luo&, &ma&, &mai&, &man&, &mang&,
&mao&, &me&, &mei&, &men&, &meng&, &mi&, &mian&, &miao&, &mie&,
&min&, &ming&, &miu&, &mo&, &mou&, &mu&, &na&, &nai&, &nan&,
&nang&, &nao&, &ne&, &nei&, &nen&, &neng&, &ni&, &nian&, &niang&,
&niao&, &nie&, &nin&, &ning&, &niu&, &nong&, &nu&, &nv&, &nuan&,
&nue&, &nuo&, &o&, &ou&, &pa&, &pai&, &pan&, &pang&, &pao&, &pei&,
&pen&, &peng&, &pi&, &pian&, &piao&, &pie&, &pin&, &ping&, &po&,
&pu&, &qi&, &qia&, &qian&, &qiang&, &qiao&, &qie&, &qin&, &qing&,
&qiong&, &qiu&, &qu&, &quan&, &que&, &qun&, &ran&, &rang&, &rao&,
&re&, &ren&, &reng&, &ri&, &rong&, &rou&, &ru&, &ruan&, &rui&,
&run&, &ruo&, &sa&, &sai&, &san&, &sang&, &sao&, &se&, &sen&,
&seng&, &sha&, &shai&, &shan&, &shang&, &shao&, &she&, &shen&,
&sheng&, &shi&, &shou&, &shu&, &shua&, &shuai&, &shuan&, &shuang&,
&shui&, &shun&, &shuo&, &si&, &song&, &sou&, &su&, &suan&, &sui&,
&sun&, &suo&, &ta&, &tai&, &tan&, &tang&, &tao&, &te&, &teng&,
&ti&, &tian&, &tiao&, &tie&, &ting&, &tong&, &tou&, &tu&, &tuan&,
&tui&, &tun&, &tuo&, &wa&, &wai&, &wan&, &wang&, &wei&, &wen&,
&weng&, &wo&, &wu&, &xi&, &xia&, &xian&, &xiang&, &xiao&, &xie&,
&xin&, &xing&, &xiong&, &xiu&, &xu&, &xuan&, &xue&, &xun&, &ya&,
&yan&, &yang&, &yao&, &ye&, &yi&, &yin&, &ying&, &yo&, &yong&,
&you&, &yu&, &yuan&, &yue&, &yun&, &za&, &zai&, &zan&, &zang&,
&zao&, &ze&, &zei&, &zen&, &zeng&, &zha&, &zhai&, &zhan&, &zhang&,
&zhao&, &zhe&, &zhen&, &zheng&, &zhi&, &zhong&, &zhou&, &zhu&,
&zhua&, &zhuai&, &zhuan&, &zhuang&, &zhui&, &zhun&, &zhuo&, &zi&,
&zong&, &zou&, &zu&, &zuan&, &zui&, &zun&, &zuo& };
private StringB
private static CharacterParser characterParser = new CharacterParser();
public static CharacterParser getInstance() {
return characterP
public String getResource() {
public void setResource(String resource) {
this.resource =
/** * 汉字转成ASCII码 * * @param chs * @return */
private int getChsAscii(String chs) {
int asc = 0;
byte[] bytes = chs.getBytes(&gb2312&);
if (bytes == null || bytes.length & 2 || bytes.length &= 0) {
throw new RuntimeException(&illegal resource string&);
if (bytes.length == 1) {
asc = bytes[0];
if (bytes.length == 2) {
int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1];
asc = (256 * hightByte + lowByte) - 256 * 256;
} catch (Exception e) {
System.out
.println(&ERROR:ChineseSpelling.class-getChsAscii(String chs)&
/** * 单字解析 * * @param str * @return */
public String convert(String str) {
String result =
int ascii = getChsAscii(str);
if (ascii & 0 && ascii & 160) {
result = String.valueOf((char) ascii);
for (int i = (pyvalue.length - 1); i &= 0; i--) {
if (pyvalue[i] &= ascii) {
result = pystr[i];
/** * 词组解析 * * @param chs * @return */
public String getSelling(String chs) {
String key,
buffer = new StringBuilder();
for (int i = 0; i & chs.length(); i++) {
key = chs.substring(i, i + 1);
if (key.getBytes().length &= 2) {
value = (String) convert(key);
if (value == null) {
value = &unknown&;
buffer.append(value);
return buffer.toString();
public String getSpelling() {
return this.getSelling(this.getResource());
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9721次
排名:千里之外
原创:44篇
(1)(1)(2)(6)(5)(9)(9)(7)(7)

我要回帖

更多关于 qq一键添加通讯录好友 的文章

 

随机推荐