ContentResolver library allows you to access "content providers" applications.
This functionality is already available with objects such as: CallLog, Contacts, Contacts2 and others.
With this library you have more flexibility as you can implement it completely in Basic4android.
The classes in this library are similar to the Java classes. The purpose it to make it easier to convert Java code. Note that most of the constants are not available in this wrapper. This means that you need to replace them with the actual values.
The features of ContentResolver are similar to SQL features. The main operations are: Query, Insert, Update and Delete. For each feature there is a synchronous method and an asynchronous method (QueryAsync, InsertAsync...). The asynchronous methods raise events when the operation completes.
Note that you should reference SQL library together with this library.
For example, the following code allows you to access the contacts provider:
Manifest editor
AddPermission("android.permission.READ_CONTACTS")
AddPermission("android.permission.WRITE_CONTACTS")
Code
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Installation instructions:
- Copy the two files in the zip to the internal libraries folder.
			
			This functionality is already available with objects such as: CallLog, Contacts, Contacts2 and others.
With this library you have more flexibility as you can implement it completely in Basic4android.
The classes in this library are similar to the Java classes. The purpose it to make it easier to convert Java code. Note that most of the constants are not available in this wrapper. This means that you need to replace them with the actual values.
The features of ContentResolver are similar to SQL features. The main operations are: Query, Insert, Update and Delete. For each feature there is a synchronous method and an asynchronous method (QueryAsync, InsertAsync...). The asynchronous methods raise events when the operation completes.
Note that you should reference SQL library together with this library.
For example, the following code allows you to access the contacts provider:
Manifest editor
AddPermission("android.permission.READ_CONTACTS")
AddPermission("android.permission.WRITE_CONTACTS")
Code
			
				B4X:
			
		
		
		Sub Process_Globals
   Private PeopleProjection() As String = Array As String("times_contacted", "last_time_contacted", _
      "display_name", "has_phone_number", "starred", "_id", "photo_id")
   Private cr As ContentResolver
End Sub
Sub Globals
End Sub
Sub Activity_Create(FirstTime As Boolean)
   If FirstTime Then
      cr.Initialize("cr")
   End If
   UpdateStarred("John", True)
End Sub
'Gets all contacts asynchronously and prints them.
Sub GetAllContacts
   Dim u As Uri
   u.Parse("content://com.android.contacts/contacts")
   cr.QueryAsync(u, PeopleProjection, "", Null, "")
End Sub
Sub CR_QueryCompleted (Success As Boolean, Crsr As Cursor)
   If Success = False Then
      Log(LastException)
   Else
      For i = 0 To Crsr.RowCount - 1
         Crsr.Position = i
         Log(Crsr.GetString("display_name"))
      Next
      Crsr.Close
   End If
End Sub
'Update the starred state of the given contact. Note that we use LIKE in the selection.
Sub UpdateStarred (Name As String, Starred As Boolean)
   Dim u As Uri
   u.Parse("content://com.android.contacts/contacts")
   Dim values As ContentValues
   values.Initialize
   values.PutBoolean("starred", Starred)
   Log(cr.Update(u, values, "display_name LIKE ?", Array As String("%" & Name & "%")))
End Sub
'Deletes the contact with the given name.
Sub DeleteContactByName(Name As String)
   Dim u As Uri
   u.Parse("content://com.android.contacts/data")
   Dim crsr As Cursor = cr.Query(u, Array As String("_id", "raw_contact_id"), _
      "mimetype = ? AND data1 = ?", Array As String("vnd.android.cursor.item/name", Name), "")
   For i = 0 To crsr.RowCount - 1
      crsr.Position = i
      Dim rawId As Long = crsr.GetLong("raw_contact_id")
      Log(cr.Delete(u, "raw_contact_id = ?", Array As String(rawId)))
      Dim u2 As Uri
      u2.Parse("content://com.android.contacts/raw_contacts")
      Log(cr.Delete(u2, "_id = ?", Array As String(rawId)))
   Next
   crsr.Close
End Sub
'Inserts a new contact.
Sub InsertContact(Name As String, Phone As String)
   Dim values As ContentValues
   Dim uri1 As Uri
   uri1.Parse("content://com.android.contacts/raw_contacts")
   values.Initialize
   values.PutNull("account_name")
   values.PutNull("account_type")
   Dim rawUri As Uri = cr.Insert(uri1, values)
   Dim rawContactId As Long = rawUri.ParseId
 
   uri1.Parse("content://com.android.contacts/data")
   values.Initialize
   values.PutLong("raw_contact_id", rawContactId)
   values.PutString("mimetype", "vnd.android.cursor.item/phone_v2")
   values.PutString("data1", Phone)
   cr.Insert(uri1, values)
 
   values.Initialize
   values.PutLong("raw_contact_id", rawContactId)
   values.PutString("mimetype", "vnd.android.cursor.item/name")
   values.PutString("data1", Name)
   cr.Insert(uri1, values)
End Sub
	Installation instructions:
- Copy the two files in the zip to the internal libraries folder.
			
				Last edited: