您的位置:首页 > 移动开发 > Android开发

第一行代码Android学习(八)

2016-08-16 16:43 323 查看
第一行代码Android学习:第八部分主要涉及到内容提供器:读取系统联系人,创建自己内容提供器的模板

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();
}
}
}
}


代码下载地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 内容提供器