内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android 实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences 存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄漏的风险。接下来,我们开始内容提供器的学习。content provider的原理说明,参见另外一篇博客(android高级---->ContentProvider的源码分析)

目录导航:

  1. 内容提供器简单说明
  2. 访问其它的Content Provider
  3. 创建自己的Content Provider
  4. 友情链接

内容提供器简单说明

一、 内容提供器的用法:

  • 使用现有的内容提供器来读取和操作相应程序中的数据
  • 创建自己的内容提供器给我们程序的数据提供外部访问接口,需要继承ContentProvider类

二、 ContentResolver的基本用法:

  • 得到实例:  可以通过Context 中的getContentResolver()方法获取到该类的实例
  • 基本方法:  提供了一系列的方法用于对数据进行CRUD 操作
  • 使用注意:  ContentResolver中的增删改查方法都是不接收表名参数的,而是使用一个Uri 参数代替,这个参数被称为Content URI。

三、 内容URI的基本介绍:

  • 重要用作:  内容URI 给内容提供器中的数据建立了唯一标识符
  • 组成部分:  权限(authority)和路径(path)。
  • 权限路径:  权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名;路径则是用于对同一应用程序中不同的表做区分的,通常都会添加到权限的后面。

访问其它的Content Provider

创建一个简单项目,结构如下:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAAD+CAIAAADTZ9uFAAAW9ElEQVR4nO2d228c12GH56/oW1/80KciRB9aZIBWEBQbFWpIT/uS+KUImnmwngSDi9hqRRso7MSJB0YCiImlwkYCWzXovagkR9SW8YVLWBZEi6aWpqzVDai4YoDIJrXiyt5EwvRhdmbOba47u3vmzO/DAN6ZPefM0Xq/PWduP2qnT5+2AQAqokFvAFQFegOgLNAbAGWB3gAoC/QGQFky0/sPp37MLLcvn8ukZQBAOkaoNwwHYLKMVm/hMsxe2qauabrZzqTL6RvMvBsAjAJK74WFhYqI+fn5yIbGo7dlaNl6la7BzLsBwCig9O50OkK9O51OZENx1BWXaZu6pmmaphkWrY1laAOcTf66pmmGxZQRbHE3+T66bwY06HWFsZfaC1kr8mMBYIKwk/NGo8G43Wg04jSUVm9KsSD1HPs4G+ky/BbfcEdvXQ8pLahO1IXeIIewene73Wq16rldrVa73W6chuLovb350fbmR9Qmx5XBSEmsOC8dv4gjXWp4J8sIWuObc95whmhyl4Jptr+d3wsm5yAnCE6tra6ueno3m82YDYXoffzsRWbx3qJUI7QhZ8nkUEp65ZQhvWNaI1b5nwWh3sxu/Z7QdkNvkA8Eevf7/Vqt5gzd/X4/ZkPD6E0fNvtS8QLxegtGb3cLsRZLb/J8OPtDg9Eb5BDxhbH19fVKpbKxsRG/oXR60+Olc3AsPPbmzpulOfYO0ntQkJsyiHri/1poGo69gdwEXvdeXl5O1FDQZbDtzY/C9LZ9V3TTosZsyjZ39CROs7Nl4pw551eoBv2umMIy3H4TfUQAjJmR39YSrbfHQC7mOBcAkJJxPFISqjc7ncYRLQBZMfEnxkT3qgAAsmDiegMARgX0BkBZoDcAygK9AVAW6A2AskBvAJQFegOgLFLozd/3stS6O+lOAZB7JNV73Ia3TZ17LBT32IC8I6/ewmVUPSD0bps6zAZqkJnew8QwTl5vAstIet87fhCApGSm9zAxjHHUhd4AJCXLyXnqGMa0eluG95A4+7y26yfxqDYR4jJ4nlvT2Bk5F7zKprUyTS6SNXSzLdwhABMiS71TxzAOoTcdqeJnLbivDDLGjTDWL+lJ6cdBELkPlNRuVjLjLbEJAzmQiYxPraWLYRxq9G6Hv+aHU0baYL25ZCcudNXfA53vhofWgRRkrHe6GMZR6U1mI/oOJtE70FMy65EfsoOSIAEYK9lfGEsRwzgqvYltbVNPPHoTE3rbti3DsGzbbpsmEfs22ERMzrl3AZgYI7nunTSGMe2FscjJuT8x1w0j8ehti0+U0WmtRCli7o4za0AGcFsLAMoihd4AgFEAvQFQFugNgLJAbwCUBXoDoCzQGwBlgd4AKIsKep8J4MqVK5PuGgCTRGW95+bmYDgoMurozW/s9XoffPABDAeFRWW9PTLeX9I8FyqncYh20uxuUrGQloF77iVABb3v3Llz586dpG/Ztk09SBaf7PUOeoCUyKtItbvJPbYGvaVABb335o7GWQQ126au64kNyGrUpfXWdZ1plXwQbdg9xCWrHwToLQWq6T1bPvz8j57Zmzt67LlnZsuHw/V2HgdN/E0cjd6GyZjVNnXdNIfaF/QuOErpPVs+XDryA2+1dORp0nCunvuwNyWBKGhxsJ2NZXJlIKfQZDFDlOwQ0o6gI2027o1perSxkEQZ/2F4t+3wEEvoLQXq6N1889kDBw8xE/IDBw8133xWrLc4dUkUtMjGtmj0MbPoHbISlQMV2I4rCR0HSY7wY46F5D8qJoYuLMQSekuBOnrvzR2dnT5cOvI0NXpPB47eAVEvoiwXZo7LTKotUYvku16p6HZcR7236CrjjYVkPi2yZGRODvSWAqX0dgw/9px77D0dcuzNfd9DhEmvN+1bnHbc6TY7sZhYLCT5cUHvnKGa3nHPnFPTZHJdJAxVWuyZ1wh78GwzNka2Q052aV/GHgup0z8O3Aab3Qn0lgwV9E5x3Zu1mzlpxOpNn5YyA0Zvupz41FqMdtgzcdRxvqaNKxbyOnGgQPWB/ZSgt7yooHfQPeejumsNgJwAvQFQFhX0BgAIgd4AKAv0BkBZoDcAygK9AVAW6A2AskBvAJQFegOgLFLozf+h36XW3Ul3CoDcI6nesQwPyjADANi2LbPewoWqBr0BCCUzvRcWFioi5ufnI+um1BsAEEpmenc6HaHenU4nsm4cdaE3AEnJcnLeaDQYtxuNRpyKKfUmH4xmH2bmsvyJzBPmmWcAVCVLvbvdbrVa9dyuVqvdbjdOxaH1FsUMCpPMBGmEAChLxqfWVldXPb2bzWbMWhmM3iExgxHFAFCWjPXu9/u1Ws0Zuvv9fsxaw+odEFvmJYSRUUIT//M8AIyN7C+Mra+vVyqVjY2N+FWG1VscM+ikjxkGmZcmLAaAoozkuvfy8nKi8kNc9/bj87mYQZuzOKgYAGqS99taoCgAgUihdzpw0xoA4eRT70E8N4ZuAMLIp94AgBhAbwCUBXoDoCzQGwBlgd4AKAv0BkBZoDcAypJ7vf9w6sfMcvvyuUl3CgApUFDvghluGbFu73GL4V6/IqGm3sJl0j0dEdAbBCKF3sPEMELvZHpPkgyfAUrRVBGfQJJC72FiGOOoC72hN/SeJKljGD11t+7tztTXZuprW/d2g8rQDB5M0bwIF2IL8byKZWi6aQ0eFTcsv5Rojsu2ST5x7ue7CRKhIvfifDv99omKZFe1gL6Rk3MirMqk98KmUxpW0D9B8E/WTdMgdsx0hvhsB2WSfP5UP7mmxAlbfrHvv3Ga23shkEXv1DGMnroz9TXnmfCZ+lpQGQLLYP9H01v8L7JleN8J5wvjK8p804k4GFajNhXtKEh0jNyL8xUmpPYr0tly4s4J9Sb3wuXScbFW1B64j4kOuxJ2hmw94efP9JPpaMDnSbeP0XuipIth5PU+WYuhN/9NZbeIop4CX7sbaOhBiWudGm8i98J8O8nuuf8V791rRzR6+waG6S38Jwg+A29V3Bn+ByPp5+8F57Gusp+n4JcIek+UdDGM/uS8s3uytvZy/fOtTozJeayvl/dVja23eOJHuyFOdMxC77Bp59j1FnQmqd58WyK9hZ8n9LZtWyq97VQxjGlPrZGzSst0j+ioyaFgnil67c8YqSNTy2ADW/mvPnFYG0tveh7MT865vVN7jak3mSsb8E8Q/5OZyTn/UbCT8+Sfv0jvwM+TaR96S0DSGMb0F8b8+Zzg1BR7aieW3uI5N+eLMNEx3uhtcGfWyFNr/BmmpHoTbXh9E/wTxP9k+tSa6HTXYBt7Piz+58/1UzevByVkcu1Tey8G0umdlMJc987D4BNxgADGTe71Lgxy6t02dWrshd1SAb3zgpx6U5NwuC0b0BsAZYHeACgL9AZAWaA3AMoCvQFQFugNgLJAb9u27Yf9J4vtvV9d/OPPV3Z+vrLz64t/tG48eNh/Mul+ATAU0Nv+Yqf3+ic772zsnrvZW7j9aOH2o3M3e+9s7L7+yc4XO71J9w6A9BRd7/Wd3s9Wdmo3ev9z6xGz1G70fraysz5Bw0eRixbSJmLYlKPQenf7j1/95F7lRq9+65FwqdzovfrJvW7/MVnLun6hvHTiBeun5aUT1vULMfbj3NjFm0NEOATWi/SNepIsXl+gd1EotN4L1/d+e+Wbyo1HlRuP3rv6p38rv3Lg4CFncTZWbjz67ZVvzn1FPUA+ff6lb//yrW3b3/7l2/LSiRj7aZu6pus6o042DzC1TV3Xo25XTXpDq6w3wIKEFFrvX67uvP/V/ly7N9fu/evxEy+des95TS7vf7X/i+YOWesF66fC18G0TV0zTD5fhAknS4PzhKQVkZMIvQtKofWeWd7+7+s9Zzn0z//y3tYDb5Vc/mN5m6/rTdGdJXSiPrCFelzSWWEjyfgHlINjDwcl9EEUAvUzEZgieL1t6pqxSE/EnRX3LeKh6++/+KLO9Tntpw3GT6H1/vf/3X73q56z/NPBQ7//8oG3Si4zy/f4utPnX/Lc9gwP2I+rqZ8gQmwJyVcMjz20QyJlglMEBXFFZCQqF6tCNBw1RwDSUWi9X1vZeefL/d9d6/3uWu+Hz79w4kzNeU0u73y5/+rHO3xdR+ndR7u2be8+2nVWA/ZDRYXqJhE5So+H7PgdlawiTngJjxnj2xQEmTKpSXTeC8gPhda7cm33jUv3397af3tr/9Rn2z88Nu2dWnM2vr21/8al+3Nb3/B1vUGbeS2CHQxNXkVhHmCE3lwcaZwUQW5gpvONeL0H+8PheB4ptN573z1+8cL2W1cf/tfmvnB56+rDFy9s7333mK/rTc69oTt6cm7brpOioZHPAwzXm0ortIn10BRBJgtVNwyd3LFAb7YYyA+F1tu27c+298sXOrMbD99q7TPL7MbD8oXOZ9v7woopTq0JVugDYDYPMFRv1m720F6cInid64uwZ8xFO8Qs5ZSi623b9qd398tLd1/79P6pL7q/ufrwN1cfnvqi+9qn98tLd4PcLho4ZZ5ToLdt2/aD7x6fbX19crlz/Pz/TS9tv/Jh5/3Nbx6I5uRFBIfduQV6gzDoUwUgZ0BvAJQFegOgLNAbAGWB3gAoC/QGQFmgNwDKAr0BUBYp9Ob/WO/ty+cm3SkAco+kesNwAIZHXr2Fy6R7CkCeyEzvhYWFioj5+fnIutAbgFGQmd6dTkeod6fTiawbR91bl2q3LtUy6SoABSHLyXmj0WDcbjQacSoG6f3n60e/vvh3T+5P31146k/Nv71z9q93P/t74n3nUSYyLdwPMAlJKASgIGSpd7fbrVarntvVarXb7capGKR3z/rHG7/+myf3pzd/8dTWL5/66Phfff3BPxDvO+YKshFE8YAAFI6MT62trq56ejebzZi1gvRebX78+muvkMtq82PifdpdLnrMiyxC1AgoJhnr3e/3a7WaM3T3+/2YtYabnLtrYZEiQX8GCACVyf7C2Pr6eqVS2djYiF9lmMk5MfOm0scsYxBXZlrCwgCoz0iuey8vLycqL7wGdutSbe70fyaYnNvi02j+nB1yg4Ih720tty7VoibnAIAwpNA7iKjJOQAgDKn1BgAMA/QGQFmgNwDKAr0BUBboDYCyQG8AlAV6A6As0BsAZcm93ghpAyAIBfVOY/ho/4B10NMsloH74MEoUVPvxDlt0BuoCPS2bRt6AzVRRO9hy0BvoCLq6L11b3emvjZTX9u6txtUhoZObxrozcUzcs+QEz8FRICEt1XwzDnRJrWd1FsQAgnAkKij90x97fjZi8fPXpyprwWVIWCiXSi9iXfapuHa5tbwx2LL0HXdqefaLSjPtulv9/QWhUACMDQK6n2yFkNvZjburwrsYsdjt4hl6GbbMnSzbbdN3W+OG7+ZNr1VV29xCCQAw6KO3lud3ZO1tZfrn291YkzOY+rdNnWNf8eRmRDbcu0OLB+lN4QGI0AdvROWISfnYikHpVzx2qbu1Wibuq7r3ljuTdEDypNVyRVycs6FQAIwNIronebCGHkyywyanPsTbd0wdJGjdtvURX8ThSjfNnXNMPhIR+LUGv6WChgBBdYbANXJvd4AgCCgNwDKAr0BUBboDYCyQG8AlAV6A6As0BsAZYHeACgL9AZAWXKvN6IUAQhCQb3jGY6kFKA+auod455z6A3URwq9FxYWKiLm5+cj60qpNxJXgBRIoXen0xHq3el0IusO8bw39AaKI4Xetm03Gg3G7UajEadi2ijFkGetqQe4iYQGMjOJTkkkXi+SxZDBAiaKLHp3u91qteq5Xa1Wu91unIpDRCm6WQt8+CEdhurloVHO07lrth2SvgTAZJBFb9u2V1dXPb2bzWbMWimjFOnJeXDYcVAcmisw9AYSI5He/X6/Vqs5Q3e/349ZK2WUoudtQM6ak5ZIZh5zeg+Cj6E3kBaJ9LZte319vVKpbGxsxK8y7Km1gLBEu23qumH48cbc5NyPRiUT0qE3kAi59LZte3l5OVH5oS+MBYQlskLb4lNrRH2y+mAjTq2BiSKd3kkZXZQi0sdB3sm93qMC82uQf6C3AGcWDrlB3oHeACgL9AZAWaA3AMqinT59ehMAoCLQGwBlKbreZwJYWlqadNcAGBboLebdd9+F4SDvQO8zZ86c4TdeuXIFhoO8A73FentkspfWYnlKmyovthK9lTmj21erNVvSSrOtcfwrQHyKrvfKysrKykrSt5ICvcFEKLree3NH4ywpWm61FstTWmk27jc+aXmpgN5yAr19h2fLh5//0TN7c0ePPffMbPkw9I4P9JYT6O27XTryA2+1dORp0nCmVmuxPOU++e0J2WrNltyN35t+xXutTZUXFqantNKpqwvO5Ngp78yU3bf8utr3fvITolhrtqRNlRdpc1rO1tlBN0qz/s79ilwn3R+Q1qB6ma3id8x1dbbktR62O+gtJ9D76N7c0eabzx44eIiZkB84eKj55rO83q3WYrk08K3lfv2d7zvpCTka+165rnrvEsoR5QmlHW+Ybg/0cppyTCvNUjsSdpLSm6zCHpAP9u/3NnJ30FtGoLc7ek8fLh15mhq9pwNH783BEOcNjS1+jBXr7ZXztgj19sUSa+MVCHkt6CTXDbefrN6uxBG7iOwnmCzQ+yhp+LHn3GPv6cBjb2fSO5iUcsOyX0yk96Y7MDpKbTLjLXHs7RRwNvHdjvZN2EnoXTCgd+Iz56TJ3mFqy50Bb25utlqzZWKA3qT1bi2Wp6ZKJdeoIL2ZYgzRvgk7Gao3OUv3foOIyTn0zh9F1zvFde8Wcc5qqlSivCVmwpve3Ng9fzYo1hroNmiNMN8r7x118yfV3D5E+iboZEy9vf16XYXeOaXoegfdc57tXWvpcNSZYAdA3oHekupNzeeJS27M1TgAQii63nLiXnuCw2AooDcAygK9AVAW6A2AsiApFQBlgd4AKAv0BkBZoDcAypJ7vfk/9Hv78rlJdwoAKVBQ72wMb5s6/rw3yDmy6H3+/Pm9vb0UFYV6C5dk7UJvkH9k0btSqVQqlZWVlX6/n6jiqPQGIP/IpXelUqlWq61WK37FOOpCb1BMpNPbYX5+vtPpxKnoqbt1b3emvjZTX9u6txtUhsAyNN20TF3TNE0zLNu2DOdhrMGMvG3qmmH5r9y3tcHW6BYGVZlaQa0BkD2S6u1w7dq1yIqeujP1teNnLx4/e3GmvhZUhsAyPBEd10iXbVZvSurB66gW7LZpuKL7tYJaAyB7JNW7Xq/fvHkzTkVe75O1mHrrhHzca3b09ip6q1EteKWpcTqoNQCyR0a9L1++/OTJk5gV/cl5Z/dkbe3l+udbndiT85Hq3Tb1wKk+3xoA2SOX3h9++GGv10tUMe2ptWR6U4fO/uQ8tAViG1ErqDUAskcWvefn53d2dlJUTHthLOHobfDnwiIn5/7EXDeMqNYAyB5Z9E7N6K97Zzt/xmwcjI/c6z16oDfIK9A7EugN8gr0BkBZoDcAygK9AVAW6A2AskBvAJQFegOgLNAbAGXJvd6IUgQgCAX1ztRwy8BNKCC3yKK3dFGKA6A3yDGy6C1rlCL0BjlGLr3li1KE3iDHSKf3WKIUqRBzf0WQfOjqTT4JQj0V4ociUg3icW4gAZLqPfIoRT9/gQhPFCQfhutNpji4W/FIGJAGSfUeX5QibSM38Ibq7Y/c5ADubMVfOAGTR0a9xxKlOPC7berEKM4nH0bpHWix80MBycEkkUvvMUYp2nbb1HXDcO0OSD4k9SZ/B/yoc+IofFDSFB2jAzB+ZNF77FGKNpdTKkw+9M+ce28T74pPo+FPkABJkEXv1Iw+ShGAvJJ7vQEAQUBvAJQFegOgLNAbAGWB3gAoy/8D0fnI1qX7WacAAAAASUVORK5CYII=" alt="" />

一、 在activity_main.xml文件中创建一个ListView的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

二、 在MainActivity.java中:

package com.example.linux.getcontact;

import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity {
private ListView listView;
ArrayAdapter<String> adapter;
List<String> contactsList = new ArrayList<String>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, contactsList);
listView.setAdapter(adapter);
readContacts();
} private void readContacts() {
Cursor cursor = null;
try {
// 查询联系人数据
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
// 获取联系人姓名
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
// 获取联系人手机号
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactsList.add(displayName + "\n" + number);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
}
}

三、 读取系统联系人是需要声明权限的,在AndroidManifest.xml中增加权限:

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

创建自己的Content Provider

  上一个自己的程序中访问其他应用程序的数据。总体来说思路还是非常简单的,只需要获取到该应用程序的内容URI,然后借助ContentResolver进行CRUD 操作就可以了。以下我们创建自己的内容提供器。

创建内容提供器--Server

项目结构:

aaarticlea/png;base64,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" alt="" />

一、 创建一个与数据库表对应的Bean:Person.java:

package com.example.linux.contentproviderserver.model;

/**
* Created by Linux on 2016/3/4.
*/
public class Person { private Integer _id;
private String name;
private String age; public Integer get_id() {
return _id;
} public void set_id(Integer _id) {
this._id = _id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
}
}

二、 接着建立一个关于数据库的工具类:DBOpenHelper.java

package com.example.linux.contentproviderserver.util;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Linux on 2016/3/4.
*/
public class DBOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "person.db"; //数据库名称
private static final int DATABASE_VERSION = 1;//数据库版本
private static final String CREATE_TABLE_PERSON = "CREATE TABLE person (_id integer primary key autoincrement, name varchar(20), age varchar(10))";
private static final String DROP_TABLE_PERSON = "DROP TABLE IF EXISTS person"; public DBOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
} @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_PERSON);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE_PERSON);
onCreate(db);
}
}

三、 创建一个自己的继承了ContentProvider的内容提供器:PersonProvider.java

  • 做一些初始化的工作:
private final static String TAG = "PersonProvider";
private DBOpenHelper dbOpenHelper;
private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
private static final int PERSONS = 1;
private static final int PERSON = 2;
private static final String AUTHORITY = "com.example.linux.contentproviderserver.action.PersonProvider";
private static final String PATH_1 = "person";
private static final String PATH_2 = "person/#"; static {
Log.i(TAG, "on PersonProvider static");
MATCHER.addURI(AUTHORITY, PATH_1, PERSONS);
MATCHER.addURI(AUTHORITY, PATH_2, PERSON);
} @Override
public boolean onCreate() {
Log.i(TAG, "on PersonProvider create");
this.dbOpenHelper = new DBOpenHelper(this.getContext());
return false;
}
  • 重写它的查插入方法:insert()
// 插入person表中的所有记录 /person
// 插入person表中指定id的记录 /person/10
@Override
public Uri insert(Uri uri, ContentValues values) {
Log.i(TAG, "uri: " + uri.getPath() + ", values: " + values.getAsString("name"));
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
switch (MATCHER.match(uri)) {
case PERSONS:
// 特别说一下第二个参数是当name字段为空时,将自动插入一个NULL。
long rowid = db.insert("person", "name", values);
Uri insertUri = ContentUris.withAppendedId(uri, rowid);// 得到代表新增记录的Uri
this.getContext().getContentResolver().notifyChange(uri, null);
return insertUri;
case PERSON:
Log.i("some", "soem");
return null;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
  • 重写它的删除方法,delete()方法:
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
int count = 0;
switch (MATCHER.match(uri)) {
case PERSONS:
count = db.delete("person", selection, selectionArgs);
return count;
case PERSON:
long id = ContentUris.parseId(uri);
String where = "_id=" + id;
if (selection != null && !"".equals(selection)) {
where = selection + " and " + where;
}
count = db.delete("person", where, selectionArgs);
return count;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
  • 重写它的更新方法:update()
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
int count = 0;
switch (MATCHER.match(uri)) {
case PERSONS:
count = db.update("person", values, selection, selectionArgs);
return count;
case PERSON:
long id = ContentUris.parseId(uri);
String where = "_id=" + id;
if (selection != null && !"".equals(selection)) {
where = selection + " and " + where;
}
count = db.update("person", values, where, selectionArgs);
return count;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
  • 重写它的查询方法,query()
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Log.i(TAG, "PersonProvider query");
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
int matchResult = MATCHER.match(uri);
switch (MATCHER.match(uri)) {
case PERSONS:
return db.query("person", projection, selection, selectionArgs,
null, null, sortOrder); case PERSON:
long id = ContentUris.parseId(uri);
String where = "_id=" + id;
if (selection != null && !"".equals(selection)) {
where = selection + " and " + where;
}
return db.query("person", projection, where, selectionArgs, null,
null, sortOrder);
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
  • 重写它的类型方法,getType()
//返回数据的MIME类型。
@Override
public String getType(Uri uri) {
Log.i(TAG, "PersonProvider get type");
switch (MATCHER.match(uri)) {
case PERSONS:
return "vnd.android.cursor.dir/person"; case PERSON:
return "vnd.android.cursor.item/person"; default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}

五、 在MainActivity方法,为了方便得到数据库中的数据,添加了查询与增加方法:

package com.example.linux.contentproviderserver;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast; import com.example.linux.contentproviderserver.util.DBOpenHelper; /**
* writer: huhx
* 内容提供器的服务端
*/
public class MainActivity extends AppCompatActivity {
private final static String TAG = "PersonProvider";
private DBOpenHelper dbOpenHelper;
SQLiteDatabase database = null;
private StringBuffer stringBuffer = null; @Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "main on create.");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbOpenHelper = new DBOpenHelper(this);
database = dbOpenHelper.getWritableDatabase();
} // 查询所有的数据
public void queryAll(View view) {
stringBuffer = new StringBuffer();
Cursor cursor = database.rawQuery("select * from person", null);
cursor.moveToFirst();
while(cursor.moveToNext()) {
String name = cursor.getString(1);
int age = cursor.getInt(2);
stringBuffer.append("name: " + name + ", age: " + age + "\n");
}
if (stringBuffer.toString().equals("")) {
Toast.makeText(MainActivity.this, "nothing", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, stringBuffer, Toast.LENGTH_SHORT).show();
}
} //插入数据
public void insertData(View view) {
Object[] object = new Object[]{"linux", 23};
database.execSQL("insert into person(name, age) values(?, ?)", object);
} @Override
protected void onDestroy() {
super.onDestroy();
database.close();
}
}

使用内容提供器--Client

项目结构:

aaarticlea/png;base64,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" alt="" />

一、在MainActivity中增加了查询与插入功能:

package com.example.linux.contentproviderclient;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast; /**
* 内容提供器的客户端
*/
public class MainActivity extends AppCompatActivity { private StringBuffer stringBuffer = new StringBuffer(); @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} // 插入数据
public void insert(View view) {
ContentResolver contentResolver = getContentResolver();
Uri insertUri = Uri.parse("content://com.example.linux.contentproviderserver.action.PersonProvider/person");
ContentValues values = new ContentValues();
values.put("name", "wangkuifeng");
values.put("age", 23);
Uri uri = contentResolver.insert(insertUri, values);
Toast.makeText(MainActivity.this, "insert success: " + uri, Toast.LENGTH_SHORT).show();
} // 查询数据
public void query(View view) {
ContentResolver contentResolver = getContentResolver();
Uri queryUri = Uri.parse("content://com.example.linux.contentproviderserver.action.PersonProvider/person/5");
Cursor queryResult = contentResolver.query(queryUri, null, null, null, null);
int count = queryResult.getCount();
for (queryResult.moveToFirst(); !queryResult.isAfterLast(); queryResult.moveToNext()) {
String name = queryResult.getString(1);
int age = queryResult.getInt(2);
stringBuffer.append("name: " + name + ", age: " + age + "\n");
}
Toast.makeText(MainActivity.this, stringBuffer.toString() + "\ncount: " + count, Toast.LENGTH_SHORT).show();
queryResult.close();
}
}

友情链接

android基础---->ContentProvider的使用的更多相关文章

  1. Android基础新手教程——4.4.1 ContentProvider初探

    Android基础新手教程--4.4.1 ContentProvider初探 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android四大组件中的最后一个--Con ...

  2. 基础4 Android基础

    基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...

  3. Android基础总结+SQlite数据库【申明:来源于网络】

    Android基础总结+SQlite数据库[申明:来源于网络] 基础总结篇之一:Activity生命周期:http://blog.csdn.net/liuhe688/article/details/6 ...

  4. Android基础——Fragment与Activity交互

    今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activity的,而且生命周期也跟Activity绑定一起.下面我们看 ...

  5. Android 组件ContentProvider

    Android 组件ContentProvider Android的数据存储有五种方式Shared Preferences.网络存储.文件存储.外储存储.SQLite,一般这些存储都仅仅是在单独的一个 ...

  6. Android之ContentProvider数据存储

    一.ContentProvider保存数据介绍 一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProvider是以类似数据库中表的方式将数 ...

  7. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  8. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  9. Mono.Android 基础

    Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...

随机推荐

  1. Session的数据共享

    要体现出Session的数据共享,需要建立两个Servlet: 第一个:建立Session,将值设置为Tom. protected void doGet(HttpServletRequest requ ...

  2. logo的一般做法

    <body> <!-- h1里面嵌套a,并且有网站名,方便seo --> <h1> <a href="#">小米官网</a&g ...

  3. Comet OJ Contest #13 简要题解

    C2 首先用并查集维护\(1\)的连通块,然后用另外一个并查集维护第\(i\)行中,第\(j\)列之后的第一个\(0\)的位置,就是如果当前位置是\(1\)那么它的父亲是它右边的格子,否则是它自己. ...

  4. (20)打鸡儿教你Vue.js

    vue-cli 快速创建工程,工程化项目目录 npm uninstall -g vue-cli npm install -g @vue/cli https://www.bootcdn.cn/ http ...

  5. element ui的table的头部自定义

    <el-table-column label="级别" min-width="120" prop="clueLevel" align= ...

  6. Oracle Trace文件生成及查看

    2011-11-03 16:45:01 聪明的笨蛋 阅读数 39596更多 分类专栏: 6) Database   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  7. [电脑]拆解DELL 2007FPb液晶显示器

    最近修了不少三星214T显示器,拆卸很方便,多数更换电容就OK了.但有一台出现了花屏,怀疑是数码板出问题了.单位有台显示屏破碎的DELL2007FPb,拆了看看能否借用数码板. 图片:IMG_2063 ...

  8. 【转】Root检测与反检测

    0x00背景需要在手机上构建一个环境对root过的设备进行伪装,让设备里面的应用将该设备当成未root的设备.10x01 Root检测手段1.检查已安装的APK包:SuperSU应用程序或者一键roo ...

  9. 优化Unity游戏项目的脚本(上)

    本文将由捷克独立游戏工作室Lonely Vertex的开发工程师Ondřej Kofroň,分享C#脚本的一系列优化方法,并提供改进Unity游戏性能的最佳实践. 在开发游戏时,我们遇到了游戏过程中偶 ...

  10. (转)AutoML 与轻量模型大列表: awesome-AutoML-and-Lightweight-Models

    Awesome-AutoML-and-Lightweight-Models 原文:http://bbs.cvmart.net/articles/414/zi-yuan-automl-yu-qing-l ...