本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
想要理解ContentProvider的最佳方式就是自己动手去尝试一下。下面介绍如何使用一个内置的Contacts ContentProvider。
1. 创建一个工程,Provider。

2. main.xml中的代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:stackFromBottom="false"
android:transcriptMode="normal" />
<TextView
android:id="@+id/contactName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold" />
<TextView
android:id="@+id/contactID"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
3. ProviderActivity.java中的代码。
public class ProviderActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Uri allContacts = Uri.parse("content://contacts/people");
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
// before Honeycomb
c = managedQuery(allContacts, null, null, null, null);
} else {
// Honeycomb and later
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
null, null, null, null);
c = cursorLoader.loadInBackground();
}
String[] columns = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID };
int[] views = new int[] { R.id.contactName, R.id.contactID };
SimpleCursorAdapter adapter;
if (android.os.Build.VERSION.SDK_INT < 11) {
// before Honeycomb
adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,
views);
} else {
// Honeycomb and later
adapter = new SimpleCursorAdapter(this, R.layout.main, c, columns,
views, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
this.setListAdapter(adapter);
}
}
4. AndroidManifest.xml文件中的代码,添加权限。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.manoel.Provider"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".ProviderActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
5. 在模拟器的电脑本里面添加一些联系人。

6. 调试刚刚写好的例子。

在这个例子中,我们获取到所有保存在Contacts(电话本)这个程序里面的联系人信息,并把它们显示在ListView中。
首先,指定Contacts的URI。
// Uri allContacts = Uri.parse("content://contacts/people");
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
然后,检查当前设备的版本。
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
// before Honeycomb
c = managedQuery(allContacts, null, null, null, null);
} else {
// Honeycomb and later
CursorLoader cursorLoader = new CursorLoader(this, allContacts,
null, null, null, null);
c = cursorLoader.loadInBackground();
}
判断版本号,采用不同的方式去获取Cursor。当然了,总是用Activity的managedQuery()方法去获取Cursor也是没问题的。
最后,通过创建SimpleCursorAdapter,用ListView把联系人列表显示出来。
别忘了,还要在配置文件里面添加权限。
<uses-permission android:name="android.permission.READ_CONTACTS"/>
分享到:
相关推荐
这个压缩包很可能会包含以上各个方面的实例代码和详细讲解,通过实际操作这些范例,开发者可以深入理解Android开发的各个环节,并提升实战能力。对于初学者,这是一个宝贵的资源库;对于有经验的开发者,也是回顾和...
《Android SDK 开发范例大全2教程源码(3-6章节)》是针对Android开发者的一个宝贵资源,它包含了Android SDK开发过程中多个关键知识点的实例代码。这份源码集覆盖了从第三章到第六章的内容,尽管不完整,但它依然为...
在Android开发中,开发者首先需要理解的是Android的基础架构。Android系统是基于Linux内核的,它由多个层次组成,包括Linux内核、硬件抽象层(HAL)、库、Android运行时以及应用程序框架。这些组件共同构成了Android...
总之,《Android SDK开发范例大全5》是一本覆盖全面、深入浅出的Android开发教程,无论你是初学者还是有经验的开发者,都能从中受益。通过阅读和实践,你将不仅掌握Android SDK的基本使用,还能提升自己的开发技能,...
《Google Android SDK 开发范例大全》是一本深入浅出的Android开发教程,旨在帮助学习者从基础到高级,全面掌握Android应用开发技术。这本书的高清PDF版包含了丰富的实例和详细讲解,无论你是初学者还是有一定经验的...
在Android开发领域,掌握丰富的实例应用是提升技能的关键。"Android 开发范例大全"是一部旨在帮助开发者深入理解和实践Android编程的教程,尤其侧重于第07至10章的内容。这些章节通常涵盖了许多核心概念和技术,对于...
《Google.Android.SDK开发范例大全》是一份详尽的Android应用开发教程,旨在帮助开发者深入理解和实践Android SDK的各项功能。这份资源分为六个部分,全面覆盖了Android开发的基础和高级概念,是初学者和进阶者...
总的来说,《Google Android SDK开发范例大全》是一本全方位的Android开发教程,无论你是初学者还是有经验的开发者,都能从中获益。通过实践书中的范例,你可以深入理解Android系统的运作机制,提高开发技能,打造出...
本资源是Google官方的Android SDK开发范例大全教程的源码,涵盖了从第五章到第八章的内容,对Android初学者和有经验的开发者来说都是宝贵的参考资料。 首先,我们来详细了解一下CH05(第五章)的源码。这一章可能...
总的来说,《Google Android SDK开发范例大全》提供的源码5包含了一系列实用的代码示例,涵盖了Android开发的关键技术点,是开发者巩固理论知识和提升实战技能的宝贵资料。通过深入研究这些示例,开发者能够更好地...
"Android开发者资料大全(开发人员必看).xlsx"可能是包含了更详细的教程链接、学习路径或其他重要信息的文档,帮助开发者系统地学习和掌握Android开发。在实践中不断探索和学习这些示例,将极大地促进个人技能的...
"软件购买注册说明.txt"和"下载说明.txt"可能包含了关于SDK的使用许可和下载安装的详细步骤,这对于初次接触Android开发的用户来说非常重要,能帮助他们避免常见问题。 3. **启动快捷方式**: "软件999.url", ...
总之,《Google Android SDK开发范例大全》的源码6提供了全面的Android开发实践,涵盖了UI设计、数据管理、多媒体处理和网络通信等核心领域,是深入学习Android开发不可或缺的资源。通过深入研究和实践这些示例,...
在Android开发中,理解Activity、Service、BroadcastReceiver和ContentProvider这四大组件至关重要。开发者可能会在这里找到关于如何创建和管理Activity,以及如何在不同组件之间进行通信的示例代码。 2. **CH10**...
总之,《Google Android SDK开发范例大全》是一本全面覆盖Android开发的实战指南,通过大量的实例和详尽的解析,让读者能够快速掌握Android开发技能,无论是对Android的初学者还是进阶开发者,都能从中获益匪浅。
《Google Android SDK开发范例大全 源码》是一份非常宝贵...通过这份《Google Android SDK开发范例大全 源码》,开发者可以系统性地学习Android开发,不仅理解基本概念,还能深入到实际操作,从而提升自己的开发技能。
【Google.Android.SDK开发范例大全】是一份详细讲解Android应用开发的PPT教程,主要针对使用Google Android SDK进行编程的开发者。这份资料旨在提供全面的示例和实践指导,帮助开发者掌握Android平台上的应用程序...
总的来说,《Google+Android+SDK开发范例大全》这本书通过多个章节全面介绍了Android开发的关键技术和最佳实践,对于希望进入Android开发领域的学习者或者寻求提升的开发者来说,无疑是一份宝贵的资源。每个章节的...
首先,Google和Android SDK的结合使用是Android开发中的核心部分。Google提供了丰富的服务和API,如Google Maps、Google Play Services、Firebase等,这些都集成在Android SDK中,使得开发者能够构建功能强大的应用...
《Android SDK 开发范例大全》是一份针对Android SDK的详细教程,旨在为开发者提供丰富的实践案例,帮助他们深入理解和掌握Android应用开发的各种技术。在这个压缩包中,我们可以找到几个关键文件,包括针对Android ...