3.App Components-Content Providers

1. Content Providers

  A content provider manages access to a central repository of data.

  A provider is part of an Android application, which often provides its own UI for working with the data. However, content providers are

    primarily intended to be used by other applications, which access the provider using a provider client object. Together, providers and

      provider clients offer a consistent, standard interface to data that also handles inter-process communication and secure data access.

 

2. OverView

  2.1 Accessing a provider

    An application accesses the data from a content provider with a ContentResolver client object. This object has methods that call

      identically-named methods in the provider object, an instance of one of the concrete subclasses of ContentProvider. The

      ContentResolver methods provide the basic "CRUD" (create, retrieve, update, and delete) functions of persistent storage.

  For example, read contrats

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
                null, 
                null, 
                null, 
                null);
        while(cursor.moveToNext()){  //cursor is like a point to every element
            Log.d("Contract Name",cursor.getString(cursor.getColumnIndex((ContactsContract.Contacts.DISPLAY_NAME))));
        }

  2.2 Content URIs

    A content URI is a URI that identifies data in a provider. Content URIs include the symbolic name of the entire provider (its authority)

      and a name that points to a table (a path). When you call a client method to access a table in a provider, the content URI for the

      table is one of the arguments(参数).

    In the previous lines of code, the full URI for the "words" table is:

     content://user_dictionary/words 

    where the user_dictionary string is the provider's authority,

    and words string is the table's path.

    The string content:// (the scheme) is always present, and identifies this as a content URI, like the http:// indentifies HTTP internet

    Many providers allow you to access a single row in a table by appending an ID value to the end of the URI. For example, to retrieve a

      row whose _ID is 4 from user dictionary, you can use this content URI:

     Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4); 

3. Retrieving Data from the Provider

  To retrieve data from a provider, follow these basic steps:

    <1> Request the read access permission for the provider.

    <2> Define the code that sends a query to the provider

  3.1 Requesting read access Permission

    To retrieve data from a provider, your application needs "read access permission" for the provider

  3.2 Constructing the query

    

  3.3 Displaying qurey results

  3.4 Getting data from qurey results

 

转载于:https://www.cnblogs.com/iMirror/p/4059688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值