public InputStream openDisplayPhoto(long photoFileId) {
Uri displayPhotoUri = ContentUris.withAppendedId(DisplayPhoto.CONTENT_URI, photoKey);
try {
AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(
displayPhotoUri, "r");
return fd.createInputStream();
} catch (IOException e) {
return null;
}
}
public InputStream openDisplayPhoto(long photoFileId) {
Uri displayPhotoUri = ContentUris.withAppendedId(DisplayPhoto.CONTENT_URI, photoKey);
try {
AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(
displayPhotoUri, "r");
return fd.createInputStream();
} catch (IOException e) {
return null;
}
}
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
cr.Initialize("cr")
...
...
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("photo_id"))
'------- How to use this photo_id :)
Next
Crsr.Close
End If
End Sub
Public Sub GetFullSizePhoto(id As Long) As Bitmap
Dim bmp As Bitmap
Dim crsr As Cursor = cr.Query(dataUri, Array As String("photo_uri"), "contact_id = ?", _
Array As String(id), "")
If crsr.RowCount > 0 Then
crsr.Position = 0
Dim photoUri As String = crsr.GetString("photo_uri")
Dim jo As JavaObject
jo.InitializeStatic("anywheresoftware.b4a.objects.streams.File")
Dim In As InputStream = File.OpenInput(jo.GetField("ContentDir"), photoUri)
bmp.Initialize2(In)
In.Close
End If
crsr.Close
Return bmp
End Sub
1. Use ContactsUtils.
2. Add this sub to ContactsUtils class:
B4X:Public Sub GetFullSizePhoto(id As Long) As Bitmap Dim bmp As Bitmap Dim crsr As Cursor = cr.Query(dataUri, Array As String("photo_uri"), "contact_id = ?", _ Array As String(id), "") If crsr.RowCount > 0 Then crsr.Position = 0 Dim photoUri As String = crsr.GetString("photo_uri") Dim jo As JavaObject jo.InitializeStatic("anywheresoftware.b4a.objects.streams.File") Dim In As InputStream = File.OpenInput(jo.GetField("ContentDir"), photoUri) bmp.Initialize2(In) In.Close End If crsr.Close Return bmp End Sub