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中的Handler和Thread详解及应用
  2. Android(安卓)P 正式到来
  3. afinal的简单应用(一)
  4. Android(安卓)Support v4、v7、v13的区别和应用场景
  5. Android高手进阶教程(十一)之----Android(安卓)通用获取Ip的方法
  6. Android(安卓)自动化测试——Monkey测试
  7. Android(安卓)应用开发支持不同的语言国际化操作
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)获取系统自带相机的照片
  2. Android利用BroadcastReceiver实现短信监
  3. TypedefViewTest
  4. ListView设置Header无分隔线
  5. Android版本更新及提示安装
  6. Android基础知识学习——界面转换(完善)
  7. Android(安卓)log日志输出到文件
  8. Android(安卓)EditText禁止复制粘贴
  9. Android(安卓)listview使用
  10. android EditText不弹出软键盘的方法