android有一个独特之处就是,数据库只能被它的创建者所使用,其他的应用是不能访问到的,所以如果你想实现不同应用之间的数据共享,就不得不用content provider了。在Android中,content provider是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取以及操作数据。并且,android自身也提供了几个现成的content provider:Contacts, Browser, CallLog, Settings, MediaStore. 应用可以通过一个唯一的ContentResolver interface来使用具体的某个content provider。 ContentResolver cr = getContentResolver();然后你就可以用ContentResolver提供的方法来使用你需要的content provider了。其中contentResolver提供的方法包括query(),insert(),update()等。要使用这些方法,还会涉及到一个东西,那就是Uri。你可以将它理解成一个string形式的contentProvider的完全路径,它的形式为<standard_prefix>://<authority>/<data_path>/<id>,例如:content://browser/bookmarkscontent://contacts/peoplecontent://contacts/people/3下面结合一个实例来看我们如何使用一个已有的content provider,给例子展示了如何从已有的电话本中读出联系人信息:package com.android.cp;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.os.Bundle;import android.provider.Contacts.People;import android.util.Log;import android.widget.Toast;public class ContentProviderTest extends Activity {    private final String TAG = "ContentProviderTest";     /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.i(TAG,"enter onCreate");        setContentView(R.layout.main);        createCP();    }        public void createCP()    {        ContentResolver cr = getContentResolver();                //Cursor cur = managedQuery(People.CONTENT_URI, null, null, null, null);        Cursor cur = cr.query(People.CONTENT_URI, null, null, null, null);                getColumnData(cur);    }        private void getColumnData(Cursor cur){         if (cur.moveToFirst()) {            String name;             String phoneNumber;             int nameColumn = cur.getColumnIndex(People.NAME);             int phoneColumn = cur.getColumnIndex(People.NUMBER);                    do {                // Get the field values                name = cur.getString(nameColumn);                phoneNumber = cur.getString(phoneColumn);                               Log.i(TAG, "name="+name);                DisplayToast(name+" "+phoneNumber);            } while (cur.moveToNext());        }    }        public void DisplayToast(String s)    {    Toast.makeText(this,    s,    Toast.LENGTH_LONG).show();    }}需要注意的是,你需要在你的Manifest文件中加上<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>否则,程序无法成功运行。

更多相关文章

  1. Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断
  2. 通过对inflate与 findViewById 方法的探究深度了解一下Android
  3. Android sharedUserId数据权限
  4. Android的两种数据存储方式分析(二)
  5. Android轻量型数据库SQLite详解
  6. Android TCP发送16进制数据
  7. Android 屏幕旋转生命周期以及处理方法

随机推荐

  1. Android中几种图像特效处理方法小结
  2. Android相关文档资源大放送 感兴趣的话可
  3. Android开发者指南(12) ―― Android(安
  4. 关于设置activity样式
  5. android 的内存、内部存储和外部存储的理
  6. android TabHost(选项卡)的使用方法
  7. Android(安卓)Service dump使用
  8. Android(安卓)中如何关闭线程
  9. android:windowSoftInputMode属性使用
  10. Android动画效果translate、scale、alpha