基于Android2.2的联系人的基本操作

Android联系人读取操作笔记 Android中的联系人都保存在一个SQLite数据库中,有兴趣的可以使用adb直接push出来看一下里面的表和视图的结构,它的路径为:/data/data/com.android.providers.contacts/databases/contacts2.db在联系人数据库中 阅读详情

 TestContacts.rar (68.47 KB, 下载次数: 398) 

前段时间公司要求我组织个通信录方面的培训,我集中研究了下基于Android2.2的联系人的基本操作,现在将成果发出来和大家一起交流下,供对通信录感兴趣的朋友学习。

Activty部分:
TestContacts.java:
package waga.android.study.TestContacts;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
public class TestContacts extends Activity 
{
TextView myTextView;
String str;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setTitle(R.string.ReadContact);
    }
    
    // 创建选项菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
     super.onCreateOptionsMenu(menu);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.layout.menu, menu);
  
  return true;
}
    // 响应选项菜单
@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
  switch (item.getItemId())
  {
   // 新建联系人
         case R.id.menu_add:
         {
          // new一 个Intent对 象 , 并指定class
          Intent intent = new Intent();
          intent.setClass(this, NewContactActivity.class);
          startActivity(intent);
          return true;
   }
         
         // 删除联系人
         case R.id.menu_delete:
         {
          // new一 个Intent对 象 , 并指定class
          Intent intent = new Intent();
          intent.setClass(this, DeleteContactActivity.class);
          startActivity(intent);
          return true;
   }
         
         // 更新联系人
         case R.id.menu_update:
         {
          // new一 个Intent对 象 , 并指定class
          Intent intent = new Intent();
          intent.setClass(this, UpdateContactActivity.class);
          startActivity(intent);
          return true;
   }
         
         // 退出
         case R.id.menu_exit:
         {
          finish();
          return true;
         }
  }
  return false;
}
@Override
protected void onResume()
{
  super.onResume();
  TextView myTextView = (TextView)findViewById(R.id.ContactsInfo);
        str = "";
        
  // 读取所有的联系人
        readAllContacts();
        
        myTextView.setText(str);
}
// 读取所有的联系人
    public void readAllContacts()
    {
     ContentResolver cr = getContentResolver();
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if (cur.getCount() > 0)
        {
         while (cur.moveToNext())
         {
          String rawContactsId = "";
             String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
          String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
          str += "ContactID:" + id + "\n";
          // 读取rawContactsId
          Cursor rawContactsIdCur = cr.query(RawContacts.CONTENT_URI, 
         null,
         RawContacts.CONTACT_ID +" = ?",  
         new String[]{id}, null);
          
          if (rawContactsIdCur.moveToFirst())
          {
           rawContactsId = rawContactsIdCur.getString(rawContactsIdCur.getColumnIndex(RawContacts._ID));
           str += "RawContactsID:" + rawContactsId + "\n";
          }
          rawContactsIdCur.close();
          
          str += "姓名:" + name + "\n";
          
          /*
           Android文档:ContactsContract.CommonDataKinds.Phone:
        CONTENT_URI:The content:// style URI for all data records of the  CONTENT_ITEM_TYPE MIME type, combined with the associated  raw contact and aggregate contact data.
       */
          
          // 读取号码
          if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
          {
           //Uri phoneUri=Uri.parse("content://com.android.contacts/data/phones");
           // 下面的ContactsContract.CommonDataKinds.Phone.CONTENT_URI可以用phoneUri代替
           Cursor PhoneCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
               null,
               //ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
               ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +" = ?",
               new String[]{rawContactsId}, null);
           while (PhoneCur.moveToNext())
           {
            String number = PhoneCur.getString(PhoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String numberType = PhoneCur.getString(PhoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
            str += numberType + ":" + number + "\n";
           }
           PhoneCur.close();
          }
          
          // 读取Email
          //Uri emailUri=Uri.parse("content://com.android.contacts/data/emails");
          // 下面的ContactsContract.CommonDataKinds.Email.CONTENT_URI可以用emailUri代替
          Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                  null,
                  ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                  new String[]{id}, null);
          while (emailCur.moveToNext())
          {    
              String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
              String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
              str += emailType + ":" + email + "\n";
          }
          /*Email类型:
          1:TYPE_HOME
    2:TYPE_WORK 
    3:TYPE_OTHER 
    4:TYPE_MOBILE 
          */
          emailCur.close();
          
          // 读取备注
          String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";    
          String[] noteWhereParams = new String[]{id, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
          Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
          if (noteCur.moveToFirst())
          {
           String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
           str += "备注:" + note + "\n";
          }
          noteCur.close();
          
          // 读取邮政地址
          String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
          String[] addrWhereParams = new String[]{id,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
          Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI, null, addrWhere, addrWhereParams, null);
          while(addrCur.moveToNext())
          {   
              String poBox = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                 String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                 String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));   
                 String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));   
                 String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));   
                 String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));   
                 String type = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
                 
                 if (poBox != "")
                 {
                  str += "POBOX:" + poBox + "\n";
                 }
                 
                 if (street != "")
                 {
                  str += "STREET:" + street + "\n";
                 }
                 
                 if (city != "")
                 {
                  str += "CITY:" + city + "\n";
                 }
                 
                 if (state != "")
                 {
                  str += "REGION:" + state + "\n";
                 }
                 
                 if (postalCode != "")
                 {
                  str += "POSTCODE:" + postalCode + "\n";
                 }
                 
                 if (country != "")
                 {
                  str += "COUNTRY:" + country + "\n";
                 }
                 
                 if (type != "")
                 {
                  str += "TYPE:" + type + "\n";
                 }
          }
          addrCur.close();
          
          // 读取即时消息
          String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
          String[] imWhereParams = new String[]{id, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
          Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,null, imWhere, imWhereParams, null);
          while(imCur.moveToNext())
          {
              String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
              String imType = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.PROTOCOL));
              str += imType + ":" + imName + "\n";
          }
          imCur.close();
          
          // 读取公司及职位
          String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
             String[] orgWhereParams = new String[]{id,ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
             Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,null, orgWhere, orgWhereParams, null);   
             while (orgCur.moveToNext())
             {
                 String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
                 String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
                 str += orgName + ":" + title + "\n";
             }
             orgCur.close();
             
             str += "\n";
         }
        }
    }
}

*************************************
NewContactActivity:
package waga.android.study.TestContacts;
import android.app.Activity;
import android.content.ContentUris;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Contacts.Data;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class NewContactActivity extends Activity
{
EditText edittext_name;
EditText edittext_number;
EditText edittext_email;
EditText edittext_qq;
Button btn_Save;
@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_contact);
        setTitle(R.string.menu_newContact);
        
        edittext_name = (EditText)findViewById(R.id.EditText_name);
        edittext_number = (EditText)findViewById(R.id.EditText_number);
        edittext_email = (EditText)findViewById(R.id.EditText_email);
        edittext_qq = (EditText)findViewById(R.id.EditText_qq);
        btn_Save =(Button)findViewById(R.id.Button_Save);
        
        edittext_name.setText("test-1");
        edittext_number.setText("13636431707-1");
        edittext_email.setText("test1@sim.com");
        edittext_qq.setText("27015155-1");
        
        btn_Save.setOnClickListener(new Button.OnClickListener()
      {
         @Override
         public void onClick(View v)
         {
          String strName = edittext_name.getText().toString();
          String strNumber = edittext_number.getText().toString();
          String strEmail = edittext_email.getText().toString();
          String strQQ = edittext_qq.getText().toString();
          
          // 新建联系人
          insert(strName, strNumber, strEmail, strQQ);
          
          // 结束activity
          finish();
         }
        });
    }

// 新建联系人
    public boolean insert(String given_name, String mobile_number, String work_email, String im_qq)
    {
     try
     {
      ContentValues values = new ContentValues();

      // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId
      Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
      long rawContactId = ContentUris.parseId(rawContactUri);
      
      // 向data表插入姓名数据
      if (given_name != "")
      {
       values.clear();
       values.put(Data.RAW_CONTACT_ID, rawContactId);
       values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
       values.put(StructuredName.GIVEN_NAME, given_name);
       getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
      }
      
      // 向data表插入电话数据
      if (mobile_number != "")
      {
       values.clear();
       values.put(Data.RAW_CONTACT_ID, rawContactId);
       values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
       values.put(Phone.NUMBER, mobile_number);
       values.put(Phone.TYPE, Phone.TYPE_MOBILE);
       getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
      }
      
      // 向data表插入Email数据
      if (work_email != "")
      {
       values.clear();
       values.put(Data.RAW_CONTACT_ID, rawContactId);
       values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
       values.put(Email.DATA, work_email);
       values.put(Email.TYPE, Email.TYPE_WORK);
       getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
      }
      
      // 向data表插入QQ数据
      if (im_qq != "")
      {
       values.clear();
       values.put(Data.RAW_CONTACT_ID, rawContactId);
       values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);
       values.put(Im.DATA, im_qq);
       values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);
       getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
      }
     }
     
        catch (Exception e) 
        {
            return false;
        }
        return true;
} 
}

*******************************************
DeleteContactActivity:
package waga.android.study.TestContacts;
import android.app.Activity;
import android.content.ContentUris;
import android.os.Bundle;
import android.provider.ContactsContract.RawContacts;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class DeleteContactActivity extends Activity
{
EditText edittext_rawContactId;
Button btn_Delete;
@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.delete_contact);
        setTitle(R.string.menu_deleteContact);
        
        edittext_rawContactId = (EditText)findViewById(R.id.EditText_rawContactId);
        btn_Delete =(Button)findViewById(R.id.Button_Delete);
        
        btn_Delete.setOnClickListener(new Button.OnClickListener()
      {
         @Override
         public void onClick(View v)
         {
          long rawContactId = Long.parseLong(edittext_rawContactId.getText().toString());
          
          // 新建联系人
          delete(rawContactId);
          
          // 结束activity
          finish();
         }
        });
    }

// 删除联系人
    public void delete(long rawContactId)
    {
     getContentResolver().delete(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), null, null);
     //getContentResolver().delete(ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, rawContactId), null, null);
    }
}

****************************
UpdateContactActivity:
package waga.android.study.TestContacts;
import android.app.Activity;
import android.content.ContentValues;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class UpdateContactActivity extends Activity
{
EditText edittext_rawContactId;
EditText edittext_NewNumber;
Button btn_Update;
@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.update_contact);
        setTitle(R.string.menu_updateContact);
        
        edittext_rawContactId = (EditText)findViewById(R.id.EditText_rawContactId_Delete);
        edittext_NewNumber = (EditText)findViewById(R.id.EditText_newNumber);
        btn_Update =(Button)findViewById(R.id.Button_Update);
        
        btn_Update.setOnClickListener(new Button.OnClickListener()
      {
         @Override
         public void onClick(View v)
         {
          String strRawContactId = edittext_rawContactId.getText().toString();
          String strNewNumber = edittext_NewNumber.getText().toString();
          
          // 更新联系人
          update(strRawContactId, strNewNumber);
          
          // 结束activity
          finish();
         }
        });
    }

// 更新联系人
    public void update(String rawRawContactId, String NewNumber)
    {
     ContentValues values = new ContentValues();
     values.put(Phone.NUMBER, NewNumber);
     values.put(Phone.TYPE, Phone.TYPE_MOBILE);
     
     String Where = ContactsContract.Data.RAW_CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
        String[] WhereParams = new String[]{rawRawContactId, Phone.CONTENT_ITEM_TYPE, };
        
     getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, Where, WhereParams);
    }
}

**********************
end

运行结果:
读取联系人:
新建 Bitmap 图像.bmp 

新建联系人:
新建 Bitmap 图像.bmp 

删除联系人:
新建 Bitmap 图像.bmp 

更新联系人:
新建 Bitmap 图像.bmp 

Android备份本地联系人和插入本地联系人 Android备份本地联系人到sd卡的xml文件中 一.需要的权限: 二.获取本地联系人数据: public void getContacts(View v){ //获取ContentResolver对象 ContentResolver contentResolver=getContentResolver() 阅读详情

相关推荐

Android实现@联系人功能的全面指南

htmltable {th, td {th {pre {简介:本文详细介绍了在Android应用中如何实现“@联系人功能”,类似于微信聊天中的提及功能。这需要理解并实现包括监听文本输入、构建联系人列表、显示联系人选择界面、处理选择结果、显示提示以及优化用户体验在内的多个关键步骤。开发者可以利用提供的APK示例代码学习如何在项目中实现这一功能,并通过反编译工具深入理解代码细节。

weixin_42309599的博客 986

Android通讯录开发之实现删除功能

Android通讯录开发之实现删除功能 2014年1月15日 无论是Android开发或者是其他移动平台的开发,ListView肯定是一个大咖,那么对ListView的操作肯定是不会少的,上一篇博客介绍了如何实现全选和反选的功能,本篇博客介绍删除功能,删除列表中的项无谓就是及时刷新列表,这又跟UI线程扯上关系了,还是那句话,数据的更新通知一定要在UI线程上做,不然会出现各种错误,比如出

巫山老妖 1万+

基于FPGA进位链的TDC高精度延时链设计与实现

本文详细介绍了基于FPGA进位链的高精度TDC延时链设计与实现方法。通过利用FPGA的CARRY4硬件资源,构建了理论分辨率达13.25ps/级的延时链,并提供了Verilog代码实现、物理布局约束技巧以及温度补偿策略。文章还涵盖了标定方法、数据转换处理和系统验证方案,为激光测距、高能物理等需要精确时间测量的应用提供了实用解决方案。

weixin_28731223的博客 486

Android -- (12) ,数据的存储

2013/1/31 一,数据的存储 数据的存储是很重要的,由于某些数据要在未来reuse。所以有必要将数据保存起来。 安卓里面有三种基本保存数据的办法: (1)shared preferences机制,用来保存一小撮数据。 (2)传统的File System (3)通过sqlite的支持用DB来存储数据 1.1,存储和载入用户的配置 一般来说,以上三种方法都可以用来

theonlydk的专栏 725

CCF CSP历年题解(python)

菜鸡一枚,没参加过算法竞赛,单纯为了抵研究生考试复试才刷题,通过写博客记录下来,希望能和大家互相交流,代码质量不高,大家见谅。 因为考研等原因,题目不定期更新… 第一题 201312-1出现最多次数的数 ...

weixin_44690402的博客 5004

利用SPSS实现逻辑回归,树模型,以及广义线性模型

本案例是IBM SPSS数据分析与挖掘实战案例精粹----第九章的学习记录 案例背景:分析出导致急救后迟发性颅脑损伤的主要影响因素,共有201项案例: 分析思路:先使用logistic回归模型进行影响因素筛选,然后利用分类树探索自变量中是否存在交互作用,最后利用广义线性模型过程拟合带交互项的Logistic回归模型 字段:性别,年龄,收缩压,舒张压,血小板,脑挫伤,中线位移,脑肿胀,入院意识,是否手术急救,其余急救措施,是否出现迟发性脑损伤; ...

hepan_defeng的博客 1万+

Avd 操作联系人

//cr 是ContentResolver // DELETE CONTACT Uri personUri = ContactsContract.RawContacts.CONTENT_URI; String where =ContactsContract.Contacts.DISPLAY_NAME+"=?"; cr.delete(personUri,where,ne

月亮的技术博客 1350

时序定江山,功耗写风骨——解读时序库lib文件的奥义【芯片设计 lib文件】

lib库,全称liberty library format file:它是Liberty时序文件的简称,使用 Liberty 语法来编写。它可以通过library compiler/dc转换成.db文件(database),供synopsis家的DC和PT使用,也可以通过spyglass的library compiler来生成sglib文件,供spyglass使用。他们是等价的,但db文件是二进制格式,人类不可读。

LogicYarn的博客 2602

Android通讯录数据库介绍与基本操作(增删改查)

Android通讯录数据库介绍与基本操作(增删改查)

gfuugff的博客 1387

手把手教你低成本复刻大疆C板缓启动电路(附原理图与选型清单)

本文详细介绍了如何低成本复刻大疆C板缓启动电路,包括核心器件选型、电路搭建与调试实战、参数优化方法论及进阶改进思路。通过替代型号和优化设计,实现功能相近的缓启动电路,成本不到原方案的1/3,适合电子爱好者、在校学生和预算紧张的硬件工程师。

weixin_29197051的博客 397

基于ESP32与JavaScript的Stack-chan桌面机器人:从硬件组装到AI交互的完整实践

嵌入式系统开发是连接物理世界与数字世界的核心技术,其核心原理在于通过微控制器直接操作硬件外设,实现感知、决策与执行。这项技术的核心价值在于为物联网、智能硬件和机器人等领域提供了低功耗、高可靠性的解决方案。在机器人应用场景中,嵌入式平台常作为主控大脑,驱动舵机、传感器并处理交互逻辑。本文聚焦的Stack-chan项目,正是这一理念的生动实践:它采用流行的ESP32微控制器,并创新性地通过Moddable运行时支持使用JavaScript进行嵌入式开发,极大地降低了机器人编程的门槛。开发者可以基于此平台,轻松实

weixin_28729173的博客 436

Android 联系人数据库介绍以及对联系人的基本操作

一、 联系人数据库  联系人的数据库文件的位置 /data/data/com.android.providers.contacts/databases.contacts2.db  数据库中重要的几张表 1、contacts表 该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的 ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加 到收藏夹等信

lksodit_yiyi的专栏 3万+

手把手教你学Simulink——基于Simulink的全双工无线通信仿真建模示例

目录手把手教你学Simulink——基于Simulink的全双工无线通信仿真建模示例一、背景介绍二、所需工具和环境三、步骤详解步骤1:创建Simulink模型步骤2:设计输入信号步骤3:添加调制模块步骤4:添加自干扰消除模块步骤5:添加AWGN信道步骤6:添加接收端处理步骤7:添加解调模块步骤8:计算误码率(BER)步骤9:添加显示模块步骤10:设置仿真参数步骤11:运行仿真并分析结果四、总结 全双工(Full-Duplex)无线通信技术允许在同一频段上同时进行数据的发送和接收,这与传统的半双工(Half-

MHD0815的博客 182

将CSV联系人导入安卓手机的3种简单方法

以上就是将CSV联系人导入安卓手机的三种方法。第一种方法(通过Gmail)最为实用,但仅能导入,不支持管理;第二种方法(通过Google Drive)操作繁琐,耗时较长;第三种方法(使用iReaShare Android Manager)则功能全面,适用于多种格式,操作简单,推荐使用。如果你在联系人或其他数据管理方面遇到问题,欢迎留言交流。

Digitally的博客 1872

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何将联系人从 iPhone 转移到安卓手机

综上所述,是最简单、高效、出错率最低的迁移方式。虽然蓝牙无法用于 iPhone 与安卓之间的数据传输,但你可以借助 iReaShare Phone Transfer 实现无缝迁移,兼顾速度、安全性和易用性。

Digitally的博客 2010

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 数据库介绍,Android 联系人数据库介绍以及对联系人的基本操作

一、 联系人数据库联系人的数据库文件的位置/data/data/com.android.providers.contacts/databases.contacts2.db数据库中重要的几张表1、contacts表该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加到收藏夹等信息。2、raw_contacts表该...

weixin_33648352的博客 1399

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android获取手机联系人,安卓开发获得手机联系人

在安卓开发过程中时常会碰到获取手机联系人的需求,今天就来总结一下如何获得手机联系人以及这么做的原因。说到获取手机联系人就不得不提一下ContentProvider,安卓通过ContentProvider在不同的应用间共享数据,手机联系人数据就是通过这种方式对用户暴露的。下面开始讲解获取手机联系人的步骤,如果有误欢迎大神指导,拍砖。一 添加权限在安卓6.0及以上的系统,需要在Manifest.xml...

weixin_42361834的博客 1218

如何在Android设备上删除联系人(3种有效方法)

如果您想清理安卓手机,或者只是想删除旧的、不需要的联系人,或者永久删除所有联系人,有三种有效的方法可供选择。无论您是想手动删除安卓手机上的联系人,还是使用专用的数据擦除工具,都可以按照以下步骤操作。

Digitally的博客 2308

如何将Android联系人导出为 Excel 格式

本文主要讨论了从Android导出联系人的四种可行方法。正如您所见,功能强大的数据管理工具——Coolmuster Android Assistant可以让这个过程更加快捷方便。它支持多种格式,让您能够高效地管理联系人。此外,它还具有许多其他实用功能,包括将联系人通过 .vcf 文件导入Android手机、一键恢复联系人备份、从 Outlook 导入等。

TheNextByte1的博客 1256

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。

Digitally的博客 8081

iphone android传电话,如何将 iPhone 的联系人转移到安卓

原标题:如何将 iPhone 的联系人转移到安卓 从 iPhone 换到一部安卓手机,或者选用一部安卓手机作为备用机。那么如何将 iPhone 的通讯录转移到安卓手机上。因为 iPhone 不支持蓝牙直接导出联系人,所以你无法像两部安卓手机那样可以直接通过蓝牙传输联系人,需要借助其他方式:1,通过 iCloud 导出联系人,发送到安卓手机上1)登陆 iCloud.com,点击“通讯录”,然后点击左...

weixin_42279592的博客 5459

5种将Android联系人传输到电脑的方法

通过导出VCF文件传输联系人可能对大量联系人列表效率不高。蓝牙传输可能会受到范围、文件数量、传输错误等限制。Google账户同步依赖于稳定的互联网连接,并且可能会引发隐私问题。Xender的效果可能因设备兼容性而异。综合考虑这些方法的优缺点,我们非常推荐iReaShare Android Manager。这款多功能软件为联系人复制、文件管理和备份提供了全面的解决方案。凭借其出色的特性,它确保了联系人从Android到电脑的安全且无缝传输。

Digitally的博客 1623

轻松同步 Outlook 联系人到 Android

如果您依赖 Microsoft Outlook 管理联系人,但又想在 Android 手机上轻松访问,那么您很幸运——有 4 种方法可以直接将 Outlook 中的联系人同步到 Android 手机。然后,您可以按照其中一种方法轻松导入 Outlook 联系人。

Digitally的博客 1771
上一篇: Android Contacts的使用(一)
下一篇: 获取通讯录所有字段
thisiscx
博客等级 码龄26年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值