Android Rookie Learning Note----contentprovider (iii) use the built-in ContentProvider to listen for text messages and view contacts

Source: Internet
Author: User
<span id="Label3"></p><p><p>To use a contentprovider, you must know the structure of the URI it can match and the table the data stores.</p></p><p><p>First find a way to access the SMS and contact data contentprovider acceptable uri:</p></p><p><p>Find the source of the corresponding contentprovider on github: https://github.com/android</p></p><p><p></p></p><p><p>There are several, which is the ContentProvider of SMS data?</p></p><p><p>In the filters input box: Enter TELEPHONY.</p></p><p><p></p></p><p><p>Now There's only one, open:</p></p><p><p></p></p><p><p>If you have git, you can choose Clone to local, if not, just download the zip Package.</p></p><p><p></p></p><p><p>Into the SRC directory, Smsprovider.java is the contentprovider of the SMS Data. To view the source code, search for Urimatcher:</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Final</span></span>Urimatcher Surlmatcher =<span style="color: #008080;"><span style="color: #008080;">2</span></span> <span style="color: #008080;"><span style="color: #008080;">3</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span><span style="color: #000000;"><span style="color: #000000;">Urimatcher (urimatcher.no_match);</span></span><span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Static</span></span><span style="color: #000000;"><span style="color: #000000;"> {</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span>Surlmatcher.adduri ("sms",<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">, sms_all);</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span>Surlmatcher.adduri ("sms", "#"<span style="color: #000000;"><span style="color: #000000;">, sms_all_id);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>Surlmatcher.adduri ("sms", "inbox"<span style="color: #000000;"><span style="color: #000000;">, sms_inbox);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>Surlmatcher.adduri ("sms", "inbox/#"<span style="color: #000000;"><span style="color: #000000;">, sms_inbox_id);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>Surlmatcher.adduri ("sms", "sent"<span style="color: #000000;"><span style="color: #000000;">, sms_sent);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>Surlmatcher.adduri ("sms", "sent/#"<span style="color: #000000;"><span style="color: #000000;">, sms_sent_id);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>Surlmatcher.adduri ("sms", "draft"<span style="color: #000000;"><span style="color: #000000;">, sms_draft);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> at</span>Surlmatcher.adduri ("sms", "draft/#"<span style="color: #000000;"><span style="color: #000000;">, sms_draft_id);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>Surlmatcher.adduri ("sms", "outbox"<span style="color: #000000;"><span style="color: #000000;">, sms_outbox);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>Surlmatcher.adduri ("sms", "outbox/#", sms_outbox_id);</pre><p><p>You can see the same static code block that you defined ContentProvider before, in fact it is written in imitation of its source.</p></p><p><p>From the Adduri () method above, You can know that the URI for getting all the SMS data is:<strong>"content://sms"</strong></p></p><p><p>In this way, we can access all the SMS Content.</p></p><p><p>In order to have a text message to us, we need to send and receive SMS on the Simulator:</p></p><p><p></p></p><p><p>In Window->show view->other-> find emulator Control, analog 110 Send Sms:</p></p><p><p>hello, you are Wanted.</p></p><p><p>In the simulator can reply sms, now in the simulator, there are the following three sms:</p></p><p><p></p></p><p><p>Check the SMS Code below:</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">protected</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">onCreate (Bundle Savedinstancestate) {</span></span><span style="color: #008080;"><span style="color: #008080;">2</span></span> <span style="color: #008080;"><span style="color: #008080;">3</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Super</span></span><span style="color: #000000;"><span style="color: #000000;">. OnCreate (savedinstancestate);</span></span><span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #000000;"><span style="color: #000000;">Setcontentview (r.layout.main_layout);</span></span><span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span>Uri uri = Uri.parse ("content://sms"<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span>cursor cursor = getcontentresolver (). query (uri,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(cursor = =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span><span style="color: #000000;"><span style="color: #000000;">(cursor.movetonext ()) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>LOG.I (tag,cursor.getstring (cursor.getcolumnindex ("body")<span style="color: #000000;"><span style="color: #000000;">)));</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> at</span>LOG.I (tag,cursor.getcount () + ""<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>}</pre><p><p>Permission is required to view SMS Content:</p></p><p><p>Use Permissions in Manifest.xml declaration:</p></p><pre><pre><span style="color: #0000ff;"><</span><span style="color: #800000;"></span><span style="color: #ff0000;">android:name</span><span style="color: #0000ff;">= "android.permission.READ_SMS"</span><span style="color: #0000ff;">/></span></pre></pre><p><p></p></p><p><p>Operation Result:</p></p><p><p></p></p><p><p>As you can see, the total number of text messages and the contents of each text message are Removed.</p></p><p><p>But how do you know if a text message is actually stored?</p></p><p><p>In file explorer, you can find the/data/data/com.android.providers.telephony/databases/ mmssms.db, the database is stored by the text message data sheet, export it to the computer, you can use SQLite expert to view the SMS Table:</p></p><p><p></p></p><p><p>It is known that the Address field is the recipient or sender number, date is the text message received or sent timestamp, type is a text message, 1 means the received sms, 2 means the text sent, body is the content of the text message, so we can be based on these fields to get our more concerned about the Information.</p></p><p><p>Modify the code as Follows:</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">protected</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">onCreate (Bundle Savedinstancestate) {</span></span><span style="color: #008080;"><span style="color: #008080;">2</span></span> <span style="color: #008080;"><span style="color: #008080;">3</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Super</span></span><span style="color: #000000;"><span style="color: #000000;">. OnCreate (savedinstancestate);</span></span><span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span> <span style="color: #000000;"><span style="color: #000000;">Setcontentview (r.layout.main_layout);</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span>Uri uri = Uri.parse ("content://sms"<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span>cursor cursor = getcontentresolver (). query (uri,<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span>string[]{"date", "address", "type", "body"},<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(cursor = =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span><span style="color: #000000;"><span style="color: #000000;">(cursor.movetonext ()) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>LOG.I (tag,dateformat.format ("yyyy-mm-dd hh:mm", cursor.getlong (0<span style="color: #000000;">) <span style="color: #000000;">. toString ());</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> at</span>LOG.I (tag,cursor.getint (2) = = 1? "received": "sent to"<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>LOG.I (tag,cursor.getstring (1) + "sms:"<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>LOG.I (tag,cursor.getstring (3<span style="color: #000000;"><span style="color: #000000;">));</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> in</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> to</span>LOG.I (tag,cursor.getcount () + ""<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> *</span>}</pre><p><p>Operation Result:</p></p><p><p></p></p><p><p>You can use the content of the parsing XML that you learned earlier to back up the text message into an XML file, which is not discussed here.</p></p><p><p>Here's a quick way to use Contentobserver to listen to Sms:</p></p><p><p>To create your own contentobserver:</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span>Myobserver<span style="color: #0000ff;"><span style="color: #0000ff;">extends</span></span><span style="color: #000000;"><span style="color: #000000;">contentobserver{</span></span><span style="color: #008080;"><span style="color: #008080;">2</span></span> <span style="color: #008080;"><span style="color: #008080;">3</span></span> <span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span><span style="color: #000000;"><span style="color: #000000;">myobserver (Handler Handler) {</span></span><span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">Super</span></span><span style="color: #000000;"><span style="color: #000000;">(handler);</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span> <span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;">@Override</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>OnChange (<span style="color: #0000ff;"><span style="color: #0000ff;">Boolean</span></span><span style="color: #000000;"><span style="color: #000000;">Selfchange) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">TODO auto-generated Method Stub</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>Toast.maketext (mainactivity.<span style="color: #0000ff;"><span style="color: #0000ff;"></span> this</span>, "you have a new text message, please note that check"<span style="color: #000000;"><span style="color: #000000;">, toast.length_short). show ();</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> at</span>}</pre><p><p>Register Contentobserver at Mainactivity:</p></p><p><p>Getcontentresolver (). registercontentobserver (uri, true, new myobserver (new Handler ()));</p></p><p><p>Use the emulator controller to send a text message to the Simulator:</p></p><p><p></p></p><p><p>Operation Result:</p></p><p><p></p></p><p><p>Note that adding a Inbox or outbox after the URI above will allow you to observe the text messages in your Inbox and outbox. There is no explanation for This.</p></p><p><p></p></p><p><p>The source code for viewing the contact data can also be found on github, contacts can be entered in the filters input box: ContentProvider</p></p><p><p></p></p><p><p>open, then clone or package download to local</p></p><p><p>Found in the SRC directory:</p></p><p><p></p></p><p><p>contactsprovider2.java, this is it.</p></p><p><p>Search Adduri () method and found authority content is:<strong>contactscontract.authority</strong></p></p><p><p>In the help manual, look for the contactscontract class, where you can find the constant authority defined in the Value:<strong>"com.android.contacts"</strong>.</p></p><p><p>In this way, the URI can be Constructed.</p></p><p><p>View the table structure for contact data in file Exploer:</p></p><p><p>In order to have data in the table, add several contacts First.</p></p><p><p>Find/data/data/com.android.providers.contacts/databases/contacts2.db</p></p><p><p>Export to a computer, and then use SQLite expert to see that there are many Tables.</p></p><p><p></p></p><p><p>Focus on the <strong>raw_contacts, data, mimetypes</strong> these three sheets.</p></p><p><p>The process of adding a contact is actually to add an ID to raw_contacts, and then insert the ID into the data table with an item in the contact data as a record, how many items of data the contact data has, and how much data is inserted in the database Table.</p></p><p><p></p></p><p><p>For example, I added two contacts to the simulator, each of whom added 3 data, namely name, phone number, and Mailbox. Two records are generated in raw_contacts with IDs 1 and 2, respectively. Then 6 records were generated in the data table, and 3 entries for each contact were stored in the raw_contact_id and Data1 fields to the content of the data i Added.</p></p><p><p>so, when we want to get contact information, we can get all the information for each contact in the data table according to the raw_contact_id Group.</p></p><p><p>Notice that the data table has a field named mimetype_id that holds the type of data1 in each record, such as 1 for the mailbox, 7 for the name, and so on, to view the Mimetypes table:</p></p><p><p></p></p><p><p><strong>Uri Raw_uri = Uri.parse ("content://com.android.contacts/raw_contacts");</strong></p></p><p><p><strong>Uri Data_uri = Uri.parse ("content://com.android.contacts/data");</strong></p></p><p><p><span style="color: #ff0000;">Note that when you get information through data_uri, if you specify the field mimetype_id you want to query, you find that the field is not found. This is because, this contentprovider internal help us do the table connection query, We look at the connection query is actually the view, which is stored in mimetype this field, and no longer have mimetype_id field.</span></p></p><p><p>Modify Mainactivity to get contact information:</p></p><pre><span style="color: #008080;"><span style="color: #008080;">1</span></span>Uri Raw_uri = Uri.parse ("content://com.android.contacts/raw_contacts"<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;">2</span></span>Uri Data_uri = Uri.parse ("content://com.android.contacts/data");<span style="color: #008080;"><span style="color: #008080;">3</span></span>Cursor raw_cursor = getcontentresolver (). query (raw_uri,<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span>string[]{"_id"},<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span>,<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;">4</span></span> <span style="color: #008080;"><span style="color: #008080;">5</span></span> <span style="color: #008080;"><span style="color: #008080;">6</span></span> <span style="color: #008080;"><span style="color: #008080;">7</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(raw_cursor = =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">){</span></span><span style="color: #008080;"><span style="color: #008080;">8</span></span> <span style="color: #008080;"><span style="color: #008080;">9</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;"> ;</span></span><span style="color: #008080;"><span style="color: #008080;">Ten</span></span> <span style="color: #008080;"><span style="color: #008080;"></span> one</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>LOG.I (tag,raw_cursor.getcount () + ""<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span><span style="color: #000000;"><span style="color: #000000;">(raw_cursor.movetonext ()) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>String id = raw_cursor.getstring (0<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>Cursor data_cursor = getcontentresolver (). query (data_uri,<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span>string[]{"mimetype", "data1"}, "raw_contact_id =?",<span style="color: #0000ff;"><span style="color: #0000ff;">New</span></span>string[]{id},<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(data_cursor = =<span style="color: #0000ff;"><span style="color: #0000ff;">NULL</span></span><span style="color: #000000;"><span style="color: #000000;">){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> a</span> <span style="color: #008080;"><span style="color: #008080;"></span> at</span> <span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;"> ;</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span>LOG.I (TAG, "contact" +<span style="color: #000000;"><span style="color: #000000;">id);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> in</span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> while</span><span style="color: #000000;"><span style="color: #000000;">(data_cursor.movetonext ()) {</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> to</span>String type = data_cursor.getstring (0<span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(type.equals ("vnd.android.cursor.item/name"<span style="color: #000000;"><span style="color: #000000;">)){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> *</span>LOG.I (TAG, "name:" +data_cursor.getstring (1<span style="color: #000000;"><span style="color: #000000;">));</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #008080;"><span style="color: #008080;">Panax Notoginseng</span></span>}<span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(type.equals ("vnd.android.cursor.item/phone_v2"<span style="color: #000000;"><span style="color: #000000;">)){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>LOG.I (TAG, "mobile number:" +data_cursor.getstring (1<span style="color: #000000;"><span style="color: #000000;">));</span></span><span style="color: #008080;"><span style="color: #008080;"></span> +</span> <span style="color: #008080;"><span style="color: #008080;"></span> a</span>}<span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(type.equals ("vnd.android.cursor.item/email_v2"<span style="color: #000000;"><span style="color: #000000;">)){</span></span><span style="color: #008080;"><span style="color: #008080;"></span> the</span> <span style="color: #008080;"><span style="color: #008080;"></span> +</span>LOG.I (TAG, "e-mail:" +data_cursor.getstring (1<span style="color: #000000;"><span style="color: #000000;">));</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> $</span> <span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #000000;"><span style="color: #000000;"> }</span></span><span style="color: #008080;"><span style="color: #008080;"></span> -</span> <span style="color: #008080;"><span style="color: #008080;"></span> the</span>}</pre><p><p>Permission is required to read the contact information:</p></p><pre><pre><span style="color: #0000ff;"><</span><span style="color: #800000;"></span><span style="color: #ff0000;">android:name</span><span style="color: #0000ff;">= "android.permission.READ_CONTACTS"</span><span style="color: #0000ff;">/></span></pre></pre><p><p></p></p><p><p>Operation Result:</p></p><p><p></p></p><p><p>About these two contentprovider there are other additions and deletions to the operation here do not explain, with their own definition of the ContentProvider usage is basically the same, as long as the understanding of the principle, to each specific contentprovider is basically a similar.</p></p><p><p>Android Rookie Learning Note----contentprovider (iii) use the built-in ContentProvider to listen for text messages and view contacts</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.