ContentProvider学习

Focus on technology, enjoy life!—— QQ:804212028 浏览链接:

主题:ContentProvider学习

ContentProvider是什么

ContentProvider(内容提供者)是Android中的四大组件之一。主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。所以如果你想实现不同应用之间的数据共享,就不得不用content provider了。

ContentProvider的使用

1.主要方法有:

public boolean onCreate() 在创建ContentProvider时调用 public Cursor query(Uri, String[], String, String[], String) 用于查询指定Uri的ContentProvider,返回一个Cursor public Uri insert(Uri, ContentValues) 用于添加数据到指定Uri的ContentProvider中 public int update(Uri, ContentValues, String, String[]) 用于更新指定Uri的ContentProvider中的数据 public int delete(Uri, String, String[]) 用于从指定Uri的ContentProvider中删除数据 public String getType(Uri) 用于返回指定的Uri中的数据的MIME类型

*如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头。 例如:要得到所有person记录的Uri为content://contacts/person,那么返回的MIME类型字符串为”vnd.android.cursor.dir/person”。

*如果要操作的数据属于非集合类型数据,那么MIME类型字符串应该以vnd.android.cursor.item/开头。 例如:要得到id为10的person记录的Uri为content://contacts/person/10,那么返回的MIME类型字符串应为”vnd.android.cursor.item/person”。

2.使用实例(获取通讯录中电话号码):

先在AndroidMainfest.xml里注册读取通讯录权限:

<uses-permission android:name=”android.permission.READ_CONTACTS” />

MainActivity源代码:

package 2;import javaimport javaimport androidimport androidimport androidimport androidimport androidimport androidimport androidimport androidimport androidimport androidpublic class MainActivity extends Activity {private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView)this.findViewById(R.id.listview);List<String> list = new ArrayList<String>();Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);while(cursor.moveToNext()){String contactString = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));String contactID = cursor.getString(cursor.getColumnIndex(Contacts._ID));Cursor phoneCursor = getContentResolver()_URI,null, ContactsContract_ID+” = “+contactID, null,null);StringBuffer allphonenum = new StringBuffer();while (phoneCursor.moveToNext()) {String phoneString =phoneCursor));allphonenum.append(phoneString+”\n”);}list.add(contactString+”:\n”+allphonenum.toString());}ListAdapter listAdapter = new ArrayAdapter<String>(this, android_list_item_1,list);listView.setAdapter(listAdapter); }}

activity_main.xml源代码:

==”fill_parent”android:layout_height=”fill_parent”>==”vertical”/></LinearLayout>

运行结果为:

我的模拟器里的通讯录里因为只存一个联系人,所以只显示一个联系人。 Focus on technology, enjoy life!—— QQ:804212028 浏览链接:

,此刻睡觉的口水将变成明天流下的泪水。

ContentProvider学习

相关文章:

你感兴趣的文章:

标签云: