第一行代码Android学习(八)
2016-08-16 16:43
393 查看
第一行代码Android学习:第八部分主要涉及到内容提供器:读取系统联系人,创建自己内容提供器的模板
1.activity_main.xml
2.MyProvider.java
3.MainActivity.java
代码下载地址
1.activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
2.MyProvider.java
/* * @Title: MyProvider.java * @Description: TODO * @author: 张志安 * @date: 2016-8-16 下午4:00:47 * */ package com.example.dyhdm_07_00contactstest; import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; import android.net.Uri; /** * TODO 创建一个自己的内容提供器的模板 * * @author 张志安 * @date: 2016-8-16 下午4:00:47 */ public class MyProvider extends ContentProvider { public static final int TABLE1_DIR = 0; public static final int TABLE1_ITEM = 1; public static final int TABLE2_DIR = 2; public static final int TABLE2_ITEM = 3; private static UriMatcher uriMatcher; static { uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI("com.example.app.provider", "table1", TABLE1_DIR); uriMatcher.addURI("com.example.app.provider", "table1/#", TABLE1_ITEM); uriMatcher.addURI("com.example.app.provider", "table2", TABLE2_DIR); uriMatcher.addURI("com.example.app.provider", "table2/#", TABLE2_ITEM); } /** * 重载方法 初始化内容提供器时调用 */ @Override public boolean onCreate() { return false; } /** * 重载方法 查询数据 */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { switch (uriMatcher.match(uri)) { case TABLE1_DIR: // 查询table1表中的所有数据 break; case TABLE1_ITEM: // 查询table1表中的单条数据 break; case TABLE2_DIR: // 查询table2表中的所有数据 break; case TABLE2_ITEM: // 查询table2表中的单条数据 break; default: break; } return null; } /** * 重载方法 根据传入的Uri返回一个MIME类型 */ @Override public String getType(Uri uri) { switch (uriMatcher.match(uri)) { case TABLE1_DIR: return "vnd.android.cursor.dir/vnd.com.example.app.provider.table1"; case TABLE1_ITEM: return "vnd.android.cursor.item/vnd.com.example.app.provider.table1"; case TABLE2_DIR: return "vnd.android.cursor.dir/vnd.com.example.app.provider.table2"; case TABLE2_ITEM: return "vnd.android.cursor.item/vnd.com.example.app.provider.table2"; default: break; } return null; } /** * 重载方法 添加一条数据 */ @Override public Uri insert(Uri uri, ContentValues values) { return null; } /** * 重载方法 删除数据 */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } /** * 重载方法 更新已有数据 */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } }
3.MainActivity.java
package com.example.dyhdm_07_00contactstest; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.widget.ArrayAdapter; import android.widget.ListView; /** * TODO 实现跨程序共享数据 获取系统联系人信息 * * 需要权限<uses-permission android:name="android.permission.READ_CONTACTS"/> * * @author 张志安 * @date: 2016-8-16 下午3:57:59 */ public class MainActivity extends Activity { private ListView lv; private ArrayAdapter<String> adapter; private List<String> list = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); lv.setAdapter(adapter); readContacts(); } /** * TODO 通过内容提供器查询联系人 * * @throw * @return void */ private void readContacts() { Cursor cursor = null; try { cursor = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { list.add(cursor.getString(cursor .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)) + "\n" + cursor.getString(cursor .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } } } }
代码下载地址
相关文章推荐
- 第一行代码学习笔记1——Android简介
- Android系统架构(Android第一行代码学习笔记1)
- Android第一行代码学习笔记四----数据存储
- 第二行代码学习笔记——第一章:开始启程——你的第一行Android代码
- Android第一行代码学习笔记九----高级技巧
- 第一行代码-Android 学习笔记(一)
- 【第一行代码-Android】学习(一)及在studio的迁移(4)intent学习
- Android第一行代码学习笔记五----内容提供器
- Android第一行代码学习笔记一----android架构
- Android 第一行代码(第二版)学习笔记
- 【第一行代码-Android】学习(一)及在studio的迁移(1)平台搭建
- 第一行代码Android学习(九)
- Android项目下目录分析(Android第一行代码学习笔记3)
- Android第一行代码学习笔记六----手机多媒体
- 第一行代码学习笔记-第一章 开始启程-1.android简介
- 【第一行代码-Android】学习(一)及在studio的迁移(2)创建活动及布局
- 第一行代码Android学习(五)
- 第一行代码Android学习(六)
- Android第一行代码学习笔记
- Android第一行代码学习笔记八----网络技术