delphi Android 获取通話记录  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi Android 获取通話记录


uses
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Provider;

var
  Cursor: JCursor;
  Name: string;
begin
  Cursor := TAndroidHelper.Activity.getContentResolver.query(
    TJCallLog_Calls.JavaClass.CONTENT_URI,
    nil,
    nil,
    nil,
    nil);
  if Cursor.moveToFirst then
  begin
    while True do
    begin
      Name := JStringToString
        (Cursor.getString(Cursor.getColumnIndex(StringToJString('NAME'))));
      Memo1.Lines.Add(Name);
      if not Cursor.moveToNext then
        Exit;
    end;
  end;
end;



完善一下:
uses
  System.DateUtils,
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Provider;

var
  Cursor: JCursor;
  Name: string;
  UnixDate: Int64;
  Date: TDateTime;
  Selection: string;
begin
  // 2016年4月1日至2016年6月1日
  Selection := Format(
    'DATE>%d and DATE<%d',
    [DateTimeToUnix(EncodeDate(2016, 4, 1)) * 1000,
    DateTimeToUnix(EncodeDate(2016, 6, 1)) * 1000]);

  // 3用参数定义条件
  Cursor := TAndroidHelper.Activity.getContentResolver.query(
    TJCallLog_Calls.JavaClass.CONTENT_URI,
    nil,
    StringToJString(Selection),
    nil,
    nil);
  if Cursor.moveToFirst then
  begin
    while True do
    begin
      Name := JStringToString
        (Cursor.getString(Cursor.getColumnIndex(StringToJString('NAME'))));
      UnixDate := Cursor.getLong
        (Cursor.getColumnIndex(StringToJString('DATE')));
      Date := UnixToDateTime(UnixDate div 1000);
      Memo1.Lines.Add(Name + ' ' + FormatDateTime('yyyy/mm/dd hh:nn:ss', Date));

      if not Cursor.moveToNext then
        Exit;
    end;
  end;
end;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.14647316932678 seconds