2017/08/23:
玩
2017/08/30:
内容提供器:主要用于不同的应用程序之间实线数据功能共享的功能
ContentResolver 的基本用法
对于每一个应用程序来说,如果想要访问内容提供器中共享的数据,就一定要借助ContentResolve 类,可以通过Context 中的getContentResolver()方法获取到该类的实例。ContentResolver 中提供了一系列的方法用于对数据进行CRUD 操作,其中insert()方法用于添加数据,update()方法用于更新数据,delete()方法用于删除数据,query()方法用于查询数据。
读取系统联系人
- 在layout.xml文件下:
<ListView android:id="@+id/listview_contact" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView>
- 主活动下:
package com.example.zzz.ca; import android.database.Cursor; import android.provider.ContactsContract; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { ListView listView; ArrayAdapter<String> arrayAdapter; List<String> contactList=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView=(ListView)findViewById(R.id.listview_contact); arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactList); listView.setAdapter(arrayAdapter); readContacts(); } private void readContacts(){ Cursor cursor=null; try { cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,null); while (cursor.moveToNext()){ String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number="未找到联系人号码"; number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); contactList.add(name+"\n"+"number"); } }catch (Exception e){ e.printStackTrace(); }finally { if (cursor!=null){ cursor.close(); } } } }
- 在Manifest.xml下加入
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
Cursor:
- Cursor 是每行的集合。
- 使用 moveToFirst() 定位第一行。
- 你必须知道每一列的名称。
- 你必须知道每一列的数据类型。
- Cursor 是一个随机的数据源。
- 所有的数据都是通过下标取得。