0
你好,這是我的代碼:德爾福Firemonkey的Android獲得通話記錄錯誤
function FetchCalls:string;
var
cursor: JCursor;
uri: Jnet_Uri;
CACHED_FORMATTED_NUMBER, CACHED_LOOKUP_URI, CACHED_MATCHED_NUMBER, CACHED_NAME,
CACHED_NORMALIZED_NUMBER, CACHED_NUMBER_LABEL, CACHED_NUMBER_TYPE, CACHED_PHOTO_ID,
CONTENT_ITEM_TYPE, CONTENT_TYPE, COUNTRY_ISO, DATA_USAGE, DATE, DEFAULT_SORT_ORDER, DURATION,
EXTRA_CALL_TYPE_FILTER, FEATURES, IS_READ, LIMIT_PARAM_KEY, NEW, NUMBER, NUMBER_PRESENTATION,
OFFSET_PARAM_KEY, PHONE_ACCOUNT_COMPONENT_NAME, PHONE_ACCOUNT_ID, TRANSCRIPTION, TYPEX, VOICEMAIL_URI : integer;
msgunixtimestampms:int64;
CACHED_FORMATTED_NUMBERx, CACHED_LOOKUP_URIx, CACHED_MATCHED_NUMBERx, CACHED_NAMEx,
CACHED_NORMALIZED_NUMBERx, CACHED_NUMBER_LABELx, CACHED_NUMBER_TYPEx, CACHED_PHOTO_IDx,
CONTENT_ITEM_TYPEx, CONTENT_TYPEx, COUNTRY_ISOx, DATA_USAGEx, DATEx, DEFAULT_SORT_ORDERx, DURATIONx,
EXTRA_CALL_TYPE_FILTERx, FEATURESx, IS_READx, LIMIT_PARAM_KEYx, NEWx, NUMBERx, NUMBER_PRESENTATIONx,
OFFSET_PARAM_KEYx, PHONE_ACCOUNT_COMPONENT_NAMEx, PHONE_ACCOUNT_IDx, TRANSCRIPTIONx, TYPEXx, VOICEMAIL_URIx : string;
begin
uri:=StrToJURI('content://call_log/calls');
cursor := SharedActivity.getContentResolver.query(uri, nil, nil,nil,nil);
CACHED_FORMATTED_NUMBER:=cursor.getColumnIndex(StringToJstring('CACHED_FORMATTED_NUMBER'));
CACHED_LOOKUP_URI:=cursor.getColumnIndex(StringToJstring('CACHED_LOOKUP_URI'));
CACHED_MATCHED_NUMBER:=cursor.getColumnIndex(StringToJstring('CACHED_MATCHED_NUMBER'));
CACHED_NAME:=cursor.getColumnIndex(StringToJstring('CACHED_NAME'));
CACHED_NORMALIZED_NUMBER:=cursor.getColumnIndex(StringToJstring('CACHED_NORMALIZED_NUMBER'));
CACHED_NUMBER_LABEL:=cursor.getColumnIndex(StringToJstring('CACHED_NUMBER_LABEL'));
CACHED_NUMBER_TYPE:=cursor.getColumnIndex(StringToJstring('CACHED_NUMBER_TYPE'));
CACHED_PHOTO_ID:=cursor.getColumnIndex(StringToJstring('CACHED_PHOTO_ID'));
CONTENT_ITEM_TYPE:=cursor.getColumnIndex(StringToJstring('CONTENT_ITEM_TYPE'));
CONTENT_TYPE:=cursor.getColumnIndex(StringToJstring('CONTENT_TYPE'));
COUNTRY_ISO:=cursor.getColumnIndex(StringToJstring('COUNTRY_ISO'));
DATA_USAGE:=cursor.getColumnIndex(StringToJstring('DATA_USAGE'));
DATE:=cursor.getColumnIndex(StringToJstring('DATE'));
DEFAULT_SORT_ORDER:=cursor.getColumnIndex(StringToJstring('DEFAULT_SORT_ORDER'));
DURATION:=cursor.getColumnIndex(StringToJstring('DURATION'));
EXTRA_CALL_TYPE_FILTER:=cursor.getColumnIndex(StringToJstring('EXTRA_CALL_TYPE_FILTER'));
FEATURES:=cursor.getColumnIndex(StringToJstring('FEATURES'));
IS_READ:=cursor.getColumnIndex(StringToJstring('IS_READ'));
LIMIT_PARAM_KEY:=cursor.getColumnIndex(StringToJstring('LIMIT_PARAM_KEY'));
NEW:=cursor.getColumnIndex(StringToJstring('NEW'));
NUMBER:=cursor.getColumnIndex(StringToJstring('NUMBER'));
NUMBER_PRESENTATION:=cursor.getColumnIndex(StringToJstring('NUMBER_PRESENTATION'));
OFFSET_PARAM_KEY:=cursor.getColumnIndex(StringToJstring('OFFSET_PARAM_KEY'));
PHONE_ACCOUNT_COMPONENT_NAME:=cursor.getColumnIndex(StringToJstring('PHONE_ACCOUNT_COMPONENT_NAME'));
PHONE_ACCOUNT_ID:=cursor.getColumnIndex(StringToJstring('PHONE_ACCOUNT_ID'));
NUMBER_PRESENTATION:=cursor.getColumnIndex(StringToJstring('NUMBER_PRESENTATION'));
TRANSCRIPTION:=cursor.getColumnIndex(StringToJstring('TRANSCRIPTION'));
TYPEX:=cursor.getColumnIndex(StringToJstring('TYPE'));
while (cursor.moveToNext) do begin
CACHED_FORMATTED_NUMBERx:=JStringToString(cursor.getString(CACHED_FORMATTED_NUMBER));
CACHED_LOOKUP_URIx:=JStringToString(cursor.getString(CACHED_LOOKUP_URI));
CACHED_MATCHED_NUMBERx:=JStringToString(cursor.getString(CACHED_MATCHED_NUMBER));
CACHED_NAMEx:=JStringToString(cursor.getString(CACHED_NAME));
CACHED_NORMALIZED_NUMBERx:=JStringToString(cursor.getString(CACHED_NORMALIZED_NUMBER));
CACHED_NUMBER_LABELx:=JStringToString(cursor.getString(CACHED_NUMBER_LABEL));
CACHED_NUMBER_TYPEx:=JStringToString(cursor.getString(CACHED_NUMBER_TYPE));
CACHED_PHOTO_IDx:=JStringToString(cursor.getString(CACHED_PHOTO_ID));
CONTENT_ITEM_TYPEx:=JStringToString(cursor.getString(CONTENT_ITEM_TYPE));
CONTENT_TYPEx:=JStringToString(cursor.getString(CONTENT_TYPE));
COUNTRY_ISOx:=JStringToString(cursor.getString(COUNTRY_ISO));
DATA_USAGEx:=JStringToString(cursor.getString(DATA_USAGE));
DATEx:=JStringToString(cursor.getString(DATE));
DEFAULT_SORT_ORDERx:=JStringToString(cursor.getString(DEFAULT_SORT_ORDER));
DURATIONx:=JStringToString(cursor.getString(DURATION));
EXTRA_CALL_TYPE_FILTERx:=JStringToString(cursor.getString(EXTRA_CALL_TYPE_FILTER));
FEATURESx:=JStringToString(cursor.getString(FEATURES));
IS_READx:=JStringToString(cursor.getString(IS_READ));
LIMIT_PARAM_KEYx:=JStringToString(cursor.getString(LIMIT_PARAM_KEY));
NEWx:=JStringToString(cursor.getString(NEW));
NUMBERx:=JStringToString(cursor.getString(NUMBER));
NUMBER_PRESENTATIONx:=JStringToString(cursor.getString(NUMBER_PRESENTATION));
OFFSET_PARAM_KEYx:=JStringToString(cursor.getString(OFFSET_PARAM_KEY));
PHONE_ACCOUNT_COMPONENT_NAMEx:=JStringToString(cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME));
PHONE_ACCOUNT_IDx:=JStringToString(cursor.getString(PHONE_ACCOUNT_ID));
NUMBER_PRESENTATIONx:=JStringToString(cursor.getString(NUMBER_PRESENTATION));
TRANSCRIPTIONx:=JStringToString(cursor.getString(TRANSCRIPTION));
TYPEXx:=JStringToString(cursor.getString(TYPEX));
Result:=TYPEXx+CACHED_NAMEx+NUMBERx;
end;
end;
,並使用... 這裏是使用方法
Memo1.lines.add(FetchCalls);
但是,當我嘗試使用這個功能我得到這個錯誤:
「JAVA.LANG.LLLEGALSTATEEXCEPTION:無法讀取列0,-1 COL從CURSORWINDOW確保光標被正確初始化之前訪問。數據不是這樣。
任何想法如何解決這個問題??
非常感謝你
首先要檢查:您是否在應用清單中指定了READ_CALL_LOG權限? – Deltics 2014-10-27 19:29:47
是的,權限是好的。 – 2014-10-27 19:33:32
另一個想法?非常感謝 – 2014-10-27 21:12:28