铁锤锤锤锤 發表於 2020-4-22 14:35:00

Android个人手机通讯录开发详解

<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
                  </svg>
                                          <h2>一、Android 个人手机通讯录开发</h2>
<ul>
<li>数据存储:SQLite 数据库</li>
<li>开发工具:Android Studio</li>
</ul>
<h2>二、Phone Module 简介</h2>
<ol>
<li>
<p><strong>界面展示</strong><br>
<img src="https://img-blog.csdnimg.cn/20200422141625540.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p>
</li>
<li>
<p><strong>文件结构简单分析</strong><br>
<img src="https://img-blog.csdnimg.cn/20200422142017963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p>
</li>
</ol>
<h2>三、个人手机通讯录代码实现</h2>
<ol>
<li>清单文件 (AndroidManifest.xml)</li>
</ol>
<pre><code class="prism language-java"><span class="token operator">&lt;</span><span class="token operator">?</span>xml version<span class="token operator">=</span><span class="token string">"1.0"</span> encoding<span class="token operator">=</span><span class="token string">"utf-8"</span><span class="token operator">?</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span>manifest xmlns<span class="token operator">:</span>android<span class="token operator">=</span><span class="token string">"http://schemas.android.com/apk/res/android"</span>
    <span class="token keyword">package</span><span class="token operator">=</span><span class="token string">"com.example.afinal"</span><span class="token operator">&gt;</span>

    <span class="token operator">&lt;</span>application
      android<span class="token operator">:</span>allowBackup<span class="token operator">=</span><span class="token string">"true"</span>
      android<span class="token operator">:</span>icon<span class="token operator">=</span><span class="token string">"@mipmap/ic_launcher"</span>
      android<span class="token operator">:</span>label<span class="token operator">=</span><span class="token string">"@string/app_name"</span>
      android<span class="token operator">:</span>roundIcon<span class="token operator">=</span><span class="token string">"@mipmap/ic_launcher_round"</span>
      android<span class="token operator">:</span>supportsRtl<span class="token operator">=</span><span class="token string">"true"</span>
      android<span class="token operator">:</span>theme<span class="token operator">=</span><span class="token string">"@style/AppTheme"</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>activity android<span class="token operator">:</span>name<span class="token operator">=</span><span class="token string">".MainActivity"</span><span class="token operator">&gt;</span>
            <span class="token operator">&lt;</span>intent<span class="token operator">-</span>filter<span class="token operator">&gt;</span>
                <span class="token operator">&lt;</span>action android<span class="token operator">:</span>name<span class="token operator">=</span><span class="token string">"android.intent.action.MAIN"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>

                <span class="token operator">&lt;</span>category android<span class="token operator">:</span>name<span class="token operator">=</span><span class="token string">"android.intent.category.LAUNCHER"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>
            <span class="token operator">&lt;</span><span class="token operator">/</span>intent<span class="token operator">-</span>filter<span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span><span class="token operator">/</span>activity<span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span><span class="token operator">/</span>application<span class="token operator">&gt;</span>

<span class="token operator">&lt;</span><span class="token operator">/</span>manifest<span class="token operator">&gt;</span>
</code></pre>
<ol start="2">
<li>MainActivity.java (主文件)</li>
</ol>
<pre><code class="prism language-java"><span class="token keyword">import</span> android<span class="token punctuation">.</span>content<span class="token punctuation">.</span>Context<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>database<span class="token punctuation">.</span>Cursor<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>database<span class="token punctuation">.</span>sqlite<span class="token punctuation">.</span>SQLiteDatabase<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>database<span class="token punctuation">.</span>sqlite<span class="token punctuation">.</span>SQLiteOpenHelper<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>os<span class="token punctuation">.</span>Bundle<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>text<span class="token punctuation">.</span>method<span class="token punctuation">.</span>ScrollingMovementMethod<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>view<span class="token punctuation">.</span>View<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>Button<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>EditText<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>TextView<span class="token punctuation">;</span>
<span class="token keyword">import</span> android<span class="token punctuation">.</span>widget<span class="token punctuation">.</span>Toast<span class="token punctuation">;</span>

<span class="token keyword">import</span> androidx<span class="token punctuation">.</span>appcompat<span class="token punctuation">.</span>app<span class="token punctuation">.</span>AppCompatActivity<span class="token punctuation">;</span>

<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MainActivity</span> <span class="token keyword">extends</span> <span class="token class-name">AppCompatActivity</span> <span class="token keyword">implements</span> <span class="token class-name">View<span class="token punctuation">.</span>OnClickListener</span><span class="token punctuation">{</span>

    MyHelper myHelper<span class="token punctuation">;</span>
    <span class="token keyword">private</span> EditText etName<span class="token punctuation">;</span>
    <span class="token keyword">private</span> EditText etPhone<span class="token punctuation">;</span>
    <span class="token keyword">private</span> TextView tvShow<span class="token punctuation">;</span>
    <span class="token keyword">private</span> Button btnAdd<span class="token punctuation">;</span>
    <span class="token keyword">private</span> Button btnQuery<span class="token punctuation">;</span>
    <span class="token keyword">private</span> Button btnUpdate<span class="token punctuation">;</span>
    <span class="token keyword">private</span> Button btnDelete<span class="token punctuation">;</span>

    <span class="token annotation punctuation">@Override</span>
    <span class="token keyword">protected</span> <span class="token keyword">void</span> <span class="token function">onCreate</span><span class="token punctuation">(</span>Bundle savedInstanceState<span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">super</span><span class="token punctuation">.</span><span class="token function">onCreate</span><span class="token punctuation">(</span>savedInstanceState<span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token function">setContentView</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>layout<span class="token punctuation">.</span>activity_main<span class="token punctuation">)</span><span class="token punctuation">;</span>
      myHelper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MyHelper</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//初始化控件</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">init</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
      etName <span class="token operator">=</span> <span class="token punctuation">(</span>EditText<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>et_name<span class="token punctuation">)</span><span class="token punctuation">;</span>
      etPhone <span class="token operator">=</span> <span class="token punctuation">(</span>EditText<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>et_phone<span class="token punctuation">)</span><span class="token punctuation">;</span>
      tvShow <span class="token operator">=</span> <span class="token punctuation">(</span>TextView<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>tv_show<span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnAdd <span class="token operator">=</span> <span class="token punctuation">(</span>Button<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_add<span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnQuery <span class="token operator">=</span> <span class="token punctuation">(</span>Button<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_query<span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnUpdate <span class="token operator">=</span> <span class="token punctuation">(</span>Button<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_update<span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnDelete <span class="token operator">=</span> <span class="token punctuation">(</span>Button<span class="token punctuation">)</span><span class="token function">findViewById</span><span class="token punctuation">(</span>R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_delete<span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnAdd<span class="token punctuation">.</span><span class="token function">setOnClickListener</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   <span class="token comment">//Button控件设置监听</span>
      btnQuery<span class="token punctuation">.</span><span class="token function">setOnClickListener</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnUpdate<span class="token punctuation">.</span><span class="token function">setOnClickListener</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      btnDelete<span class="token punctuation">.</span><span class="token function">setOnClickListener</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
      tvShow<span class="token punctuation">.</span><span class="token function">setMovementMethod</span><span class="token punctuation">(</span>ScrollingMovementMethod<span class="token punctuation">.</span><span class="token function">getInstance</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//设置文本滚动</span>
    <span class="token punctuation">}</span>
    <span class="token annotation punctuation">@Override</span>
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onClick</span><span class="token punctuation">(</span>View v<span class="token punctuation">)</span><span class="token punctuation">{</span>
      String name<span class="token punctuation">;</span>
      String phone<span class="token punctuation">;</span>
      SQLiteDatabase db<span class="token punctuation">;</span>
      <span class="token keyword">switch</span> <span class="token punctuation">(</span>v<span class="token punctuation">.</span><span class="token function">getId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
            <span class="token keyword">case</span> R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_add<span class="token operator">:</span><span class="token comment">//添加联系人</span>
                name <span class="token operator">=</span> etName<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                phone <span class="token operator">=</span> etPhone<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                db <span class="token operator">=</span> myHelper<span class="token punctuation">.</span><span class="token function">getWritableDatabase</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span>name<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span> <span class="token operator">||</span> phone<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">//联系人信息不能为空</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息添加失败"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                <span class="token keyword">else</span> <span class="token punctuation">{</span>
                  db<span class="token punctuation">.</span><span class="token function">execSQL</span><span class="token punctuation">(</span><span class="token string">"insert into person (name,phone) values(?,?)"</span><span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">{</span>name<span class="token punctuation">,</span> phone<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息添加成功"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                db<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">break</span><span class="token punctuation">;</span>
            <span class="token keyword">case</span> R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_query<span class="token operator">:</span> <span class="token comment">//查询联系人</span>
                db <span class="token operator">=</span> myHelper<span class="token punctuation">.</span><span class="token function">getReadableDatabase</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                Cursor cursor <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token function">rawQuery</span><span class="token punctuation">(</span><span class="token string">"select name,phone from person"</span><span class="token punctuation">,</span>null<span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span>cursor<span class="token punctuation">.</span><span class="token function">getCount</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                  tvShow<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"空目录"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span><span class="token keyword">else</span> <span class="token punctuation">{</span>
                  cursor<span class="token punctuation">.</span><span class="token function">moveToFirst</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  tvShow<span class="token punctuation">.</span><span class="token function">setText</span><span class="token punctuation">(</span><span class="token string">"Name:"</span> <span class="token operator">+</span> cursor<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">" ; Tel:"</span> <span class="token operator">+</span> cursor<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  <span class="token keyword">while</span> <span class="token punctuation">(</span>cursor<span class="token punctuation">.</span><span class="token function">moveToNext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                        tvShow<span class="token punctuation">.</span><span class="token function">append</span><span class="token punctuation">(</span><span class="token string">"\n"</span> <span class="token operator">+</span> <span class="token string">"Name:"</span> <span class="token operator">+</span> cursor<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">" ; Tel:"</span> <span class="token operator">+</span> cursor<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  <span class="token punctuation">}</span>
                <span class="token punctuation">}</span>
                cursor<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                db<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">break</span><span class="token punctuation">;</span>
            <span class="token keyword">case</span> R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_update<span class="token operator">:</span> <span class="token comment">//修改联系人</span>
                db <span class="token operator">=</span> myHelper<span class="token punctuation">.</span><span class="token function">getWritableDatabase</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                name <span class="token operator">=</span> etName<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                phone <span class="token operator">=</span> etPhone<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span>name<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span> <span class="token operator">||</span> phone<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">//联系人信息不能为空</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息修改失败"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                <span class="token keyword">else</span> <span class="token punctuation">{</span>
                  db<span class="token punctuation">.</span><span class="token function">execSQL</span><span class="token punctuation">(</span><span class="token string">"update person set name=?,phone=? where name=?"</span><span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">{</span>name<span class="token punctuation">,</span> phone<span class="token punctuation">,</span> name<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息修改成功"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                db<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">break</span><span class="token punctuation">;</span>
            <span class="token keyword">case</span> R<span class="token punctuation">.</span>id<span class="token punctuation">.</span>btn_delete<span class="token operator">:</span> <span class="token comment">//删除联系人</span>
                db <span class="token operator">=</span> myHelper<span class="token punctuation">.</span><span class="token function">getWritableDatabase</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                name <span class="token operator">=</span> etName<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                phone <span class="token operator">=</span> etPhone<span class="token punctuation">.</span><span class="token function">getText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span>name<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span> <span class="token operator">||</span> phone<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token comment">//联系人信息不能为空</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息删除失败"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                <span class="token keyword">else</span> <span class="token punctuation">{</span>
                  db<span class="token punctuation">.</span><span class="token function">execSQL</span><span class="token punctuation">(</span><span class="token string">"delete from person where name=? and phone=?"</span><span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">{</span>name<span class="token punctuation">,</span> phone<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                  Toast<span class="token punctuation">.</span><span class="token function">makeText</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span><span class="token string">"联系人信息删除成功"</span><span class="token punctuation">,</span>Toast<span class="token punctuation">.</span>LENGTH_SHORT<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                db<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                <span class="token keyword">break</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>

<span class="token comment">//MyHelper类 (数据库文件)</span>
<span class="token keyword">class</span> <span class="token class-name">MyHelper</span> <span class="token keyword">extends</span> <span class="token class-name">SQLiteOpenHelper</span> <span class="token punctuation">{</span>


    <span class="token keyword">public</span> <span class="token function">MyHelper</span><span class="token punctuation">(</span>Context context<span class="token punctuation">)</span><span class="token punctuation">{</span>
      <span class="token keyword">super</span><span class="token punctuation">(</span>context<span class="token punctuation">,</span> <span class="token string">"alan.db"</span><span class="token punctuation">,</span> null <span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token annotation punctuation">@Override</span>

    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onCreate</span><span class="token punctuation">(</span>SQLiteDatabase db<span class="token punctuation">)</span><span class="token punctuation">{</span>
      db<span class="token punctuation">.</span><span class="token function">execSQL</span><span class="token punctuation">(</span><span class="token string">"create table person(id integer primary key autoincrement,name varchar(20),phone varchar(20) unique)"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">onUpgrade</span><span class="token punctuation">(</span>SQLiteDatabase db<span class="token punctuation">,</span> <span class="token keyword">int</span> oldVersion<span class="token punctuation">,</span> <span class="token keyword">int</span> newVersion<span class="token punctuation">)</span><span class="token punctuation">{</span>

    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<ol start="3">
<li>activity_main.xml (XML Layout 布局文件)</li>
</ol>
<pre><code class="prism language-java"><span class="token operator">&lt;</span><span class="token operator">?</span>xml version<span class="token operator">=</span><span class="token string">"1.0"</span> encoding<span class="token operator">=</span><span class="token string">"utf-8"</span><span class="token operator">?</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span>RelativeLayout
    xmlns<span class="token operator">:</span>android<span class="token operator">=</span><span class="token string">"http://schemas.android.com/apk/res/android"</span>
    xmlns<span class="token operator">:</span>app<span class="token operator">=</span><span class="token string">"http://schemas.android.com/apk/res-auto"</span>
    xmlns<span class="token operator">:</span>tools<span class="token operator">=</span><span class="token string">"http://schemas.android.com/tools"</span>
    android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
    android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"match_parent"</span>
    android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/background"</span>
    tools<span class="token operator">:</span>context<span class="token operator">=</span><span class="token string">".MainActivity"</span><span class="token operator">&gt;</span>

    <span class="token operator">&lt;</span>LinearLayout
      android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
      android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
      android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/lineOne"</span><span class="token operator">&gt;</span>

      <span class="token operator">&lt;</span>ImageView
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"107dp"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"74dp"</span>
            android<span class="token operator">:</span>layout_margin<span class="token operator">=</span><span class="token string">"30dp"</span>
            android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/icon_phone"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>

      <span class="token operator">&lt;</span>TextView
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">"通 讯 录"</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"30dp"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span>
            android<span class="token operator">:</span>textColor<span class="token operator">=</span><span class="token string">"#BC8F8F"</span>
            android<span class="token operator">:</span>layout_gravity<span class="token operator">=</span><span class="token string">"center"</span>
            android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"50dp"</span>
            <span class="token operator">/</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span><span class="token operator">/</span>LinearLayout<span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>LinearLayout
      android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/lineTwo"</span>
      android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
      android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
      android<span class="token operator">:</span>layout_below<span class="token operator">=</span><span class="token string">"@+id/lineOne"</span>
      android<span class="token operator">:</span>layout_marginTop<span class="token operator">=</span><span class="token string">"20dp"</span>
      android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"18dp"</span>
      android<span class="token operator">:</span>layout_marginRight<span class="token operator">=</span><span class="token string">"18dp"</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>TextView
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">"姓 名 : "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"18dp"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>EditText
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/et_name"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>hint<span class="token operator">=</span><span class="token string">"请输入姓名"</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>maxLength<span class="token operator">=</span><span class="token string">"14"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span><span class="token operator">/</span>LinearLayout<span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>LinearLayout
      android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/lineTree"</span>
      android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
      android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
      android<span class="token operator">:</span>layout_below<span class="token operator">=</span><span class="token string">"@+id/lineTwo"</span>
      android<span class="token operator">:</span>layout_marginTop<span class="token operator">=</span><span class="token string">"10dp"</span>
      android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"18dp"</span>
      android<span class="token operator">:</span>layout_marginRight<span class="token operator">=</span><span class="token string">"18dp"</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>TextView
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">"电 话 : "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"18dp"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>EditText
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/et_phone"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>hint<span class="token operator">=</span><span class="token string">"请输入手机号码"</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>maxLength<span class="token operator">=</span><span class="token string">"11"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span><span class="token operator">/</span>LinearLayout<span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>LinearLayout
      android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
      android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
      android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/lineFour"</span>
      android<span class="token operator">:</span>layout_below<span class="token operator">=</span><span class="token string">"@+id/lineTree"</span>
      android<span class="token operator">:</span>layout_marginTop<span class="token operator">=</span><span class="token string">"30dp"</span>
      android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"18dp"</span>
      android<span class="token operator">:</span>layout_marginRight<span class="token operator">=</span><span class="token string">"18dp"</span>
      android<span class="token operator">:</span>orientation<span class="token operator">=</span><span class="token string">"horizontal"</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>Button
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/btn_add"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/shape"</span>
            android<span class="token operator">:</span>layout_weight<span class="token operator">=</span><span class="token string">"1"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">" 添 加 "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>textColor<span class="token operator">=</span><span class="token string">"#c2c8ec"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>Button
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/btn_query"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/shape"</span>
            android<span class="token operator">:</span>layout_weight<span class="token operator">=</span><span class="token string">"1"</span>
            android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"4dp"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">" 查 询 "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>textColor<span class="token operator">=</span><span class="token string">"#c2c8ec"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>Button
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/btn_update"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/shape"</span>
            android<span class="token operator">:</span>layout_weight<span class="token operator">=</span><span class="token string">"1"</span>
            android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"4dp"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">" 修 改 "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>textColor<span class="token operator">=</span><span class="token string">"#c2c8ec"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
      <span class="token operator">&lt;</span>Button
            android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/btn_delete"</span>
            android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"wrap_content"</span>
            android<span class="token operator">:</span>background<span class="token operator">=</span><span class="token string">"@drawable/shape"</span>
            android<span class="token operator">:</span>layout_weight<span class="token operator">=</span><span class="token string">"1"</span>
            android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"4dp"</span>
            android<span class="token operator">:</span>text<span class="token operator">=</span><span class="token string">" 删 除 "</span>
            android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"16dp"</span>
            android<span class="token operator">:</span>textColor<span class="token operator">=</span><span class="token string">"#c2c8ec"</span>
            android<span class="token operator">:</span>textStyle<span class="token operator">=</span><span class="token string">"bold"</span><span class="token operator">/</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span><span class="token operator">/</span>LinearLayout<span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>TextView
      android<span class="token operator">:</span>id<span class="token operator">=</span><span class="token string">"@+id/tv_show"</span>
      android<span class="token operator">:</span>layout_width<span class="token operator">=</span><span class="token string">"match_parent"</span>
      android<span class="token operator">:</span>layout_height<span class="token operator">=</span><span class="token string">"180dp"</span>
      android<span class="token operator">:</span>scrollbars<span class="token operator">=</span><span class="token string">"vertical"</span>
      android<span class="token operator">:</span>layout_below<span class="token operator">=</span><span class="token string">"@+id/lineFour"</span>
      android<span class="token operator">:</span>layout_marginTop<span class="token operator">=</span><span class="token string">"20dp"</span>
      android<span class="token operator">:</span>layout_marginLeft<span class="token operator">=</span><span class="token string">"20dp"</span>
      android<span class="token operator">:</span>layout_marginRight<span class="token operator">=</span><span class="token string">"18dp"</span>
      android<span class="token operator">:</span>textSize<span class="token operator">=</span><span class="token string">"20dp"</span><span class="token operator">/</span><span class="token operator">&gt;</span>

<span class="token operator">&lt;</span><span class="token operator">/</span>RelativeLayout<span class="token operator">&gt;</span>
</code></pre>
<ol start="4">
<li>shape.xml (Button 按钮设置)</li>
</ol>
<pre><code class="prism language-java"><span class="token operator">&lt;</span><span class="token operator">?</span>xml version<span class="token operator">=</span><span class="token string">"1.0"</span> encoding<span class="token operator">=</span><span class="token string">"utf-8"</span> <span class="token operator">?</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span>shape xmlns<span class="token operator">:</span>android<span class="token operator">=</span><span class="token string">"http://schemas.android.com/apk/res/android"</span>
    android<span class="token operator">:</span>shape<span class="token operator">=</span><span class="token string">"rectangle"</span><span class="token operator">&gt;</span>

    <span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>设置背景色<span class="token operator">--</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>solid android<span class="token operator">:</span>color<span class="token operator">=</span><span class="token string">"#fff6c6"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>

    <span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>设置圆角<span class="token operator">--</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>corners android<span class="token operator">:</span>radius<span class="token operator">=</span><span class="token string">"105dip"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>

    <span class="token operator">&lt;</span><span class="token operator">!</span><span class="token operator">--</span>设置边框线的宽度和颜色<span class="token operator">--</span><span class="token operator">&gt;</span>
    <span class="token operator">&lt;</span>stroke android<span class="token operator">:</span>width<span class="token operator">=</span><span class="token string">"0dp"</span> android<span class="token operator">:</span>color<span class="token operator">=</span><span class="token string">"#fff6c6"</span> <span class="token operator">/</span><span class="token operator">&gt;</span>
<span class="token operator">&lt;</span><span class="token operator">/</span>shape<span class="token operator">&gt;</span>
</code></pre>
<h2>四、Android 个人通讯录功能测试</h2>
<ol>
<li>添加</li>
</ol>
<pre><code class="prism language-java">分别添加联系人:姓名:张三明 电话:<span class="token number">13888899922</span>

        姓名:李大炮 电话:<span class="token number">15866655588</span>

添加联系人功能验证:姓名:张三明 电话:<span class="token number">13888899922</span>
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/20200422142819591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"><br>
<img src="https://img-blog.csdnimg.cn/20200422142907471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p>
<h2>五、注意事项</h2>
<p>测试中的一些问题:</p>
<ol>
<li><code>联系人电话号码不能重复添加</code>,程序会终止退出,因为联系人的电话号码是唯一的(一个人可以有多个手机号,而一个手机号只能一个人使用 {该功能程序已经实现} )。</li>
<li>电话号码<code>长度限制为11位</code>。</li>
<li>联系人<code>信息为空不能成功添加</code>。</li>
</ol>
<pre><code class="prism language-java">再次添加联系人:姓名:小 莉 电话:<span class="token number">15866655588</span>
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/2020042214313363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"><br>
<img src="https://img-blog.csdnimg.cn/20200422143308214.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"><br>
<img src="https://img-blog.csdnimg.cn/20200422143341159.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTUzOTQ5,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述"></p>
<blockquote>
<p>参考:Android个人手机通讯录开发详解,如有问题请留言!!!<br>
打包好的源码文件:https://download.csdn.net/download/m0_46153949/12351209</p>
</blockquote>

                                    

</div>
<div id="MySignature" role="contentinfo">
    欢迎查阅<br><br>
来源:https://www.cnblogs.com/gh110/p/12755321.html
頁: [1]
查看完整版本: Android个人手机通讯录开发详解