Bir blog sitesinde android telefon rehber okuma örnek kodlarını gördüm
[code]USES Androidapi.JNI.GraphicsContentViewText,
FMX.Helpers.Android,
Androidapi.JNI.Provider,
Androidapi.JNI.JavaTypes;
function RehberOku: TStringList;
var
cContacts,
cContactsPhone : JCursor;
iNumaraSayisi : Integer;
iIdx : Int64;
strGorunenAd,
strTelNo,
strKisiID : string;
begin
Result := TStringList.Create;
cContacts := SharedActivity.getContentResolver.query( TJContactsContract_Contacts.JavaClass.CONTENT_URI, nil, nil, nil, nil );
if (cContacts.getCount > 0) then
begin
while (cContacts.moveToNext) do
begin
iIdx := cContacts.getLong( cContacts.getColumnIndex(StringToJString('_ID')) );
strGorunenAd := JStringToString(cContacts.getString(cContacts.getColumnIndex(StringToJString('DISPLAY_NAME'))));
iNumaraSayisi := cContacts.getInt(cContacts.getColumnIndex(StringToJString('HAS_PHONE_NUMBER')));
if (iNumaraSayisi > 0) then
begin
cContactsPhone := SharedActivity.getContentResolver.query(TJCommonDataKinds_Phone.JavaClass.CONTENT_URI, nil,StringToJString('CONTACT_ID = ' + IntToStr(iIdx)),nil, nil);
while (cContactsPhone.moveToNext) do
begin
strTelNo := JStringToString(cContactsPhone.getString(cContactsPhone.getColumnIndex(StringToJString('DATA1'))));
strKisiID := JStringToString(cContactsPhone.getString(cContactsPhone.getColumnIndex(StringToJString('CONTACT_ID'))));
Result.Add(strGorunenAd + ': ' + strTelNo);
end;
cContactsPhone.close;
end;
end;
end;
cContacts.close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.AddStrings( RehberOku() );
end;[/code]
Çalıştırdığımda telefon ekranımda java hatası veriyor;
java.lang.SecurityException:
Permission Denial:reading
com.android.providers.contacts.ContactsProvide2 uri content://
com.android.contacts/contacts
from pid=8394, uid=10239 requires
android.permission.READ_CONTACTS, or grantUriPermission()
şeklinde bir hata. Telefon rehberini okuma ile ilgili başka yöntem bulamadım. Hatayı da çözemedim

Yardımcı olursanız sevinirim..