只需访问 flutter 中的通话记录(?)

Simply accessing call logs in flutter (?)

我需要在我的项目中访问 android 移动设备 phone 的通话记录,我对 Flutter 的经验不多。找到一个名为“call_log”但不知道如何实现的包。非常感谢任何帮助。

这是 'call_log' 软件包的自述文件:

// IMPORT PACKAGE
import 'package:call_log/call_log.dart';

// GET WHOLE CALL LOG
Iterable<CallLogEntry> entries = await CallLog.get();

// QUERY CALL LOG (ALL PARAMS ARE OPTIONAL)
var now = DateTime.now();
int from = now.subtract(Duration(days: 60)).millisecondsSinceEpoch;
int to = now.subtract(Duration(days: 30)).millisecondsSinceEpoch;
Iterable<CallLogEntry> entries = await CallLog.query(
      dateFrom: from,
      dateTo: to,
      durationFrom: 0,
      durationTo: 60,
      name: 'John Doe',
      number: '901700000',
      type: CallType.incoming,
    );

我从你的问题中了解到,你无法在此处使用 CallLog.get() 的输出。

将包添加到pubspec.yaml文件依赖并导入后,可以使用下面一行代码调用get()函数-

Iterable<CallLogEntry> entries = await CallLog.get();

它 returns 一个 CallLogEntry 类型的 Iterable。可迭代对象只是 值的集合,或 "elements",可以按顺序访问。

输出存储在 entries 中,然后可以对其进行迭代以访问诸如 -

之类的值
  void _callLogs() async {
  Iterable<CallLogEntry> entries = await CallLog.get();
  for (var item in entries) {
    print(item.name);
  }
}

上面的代码片段将打印所有 CallLog 条目的名称。尝试将 item.name 替换为 item.number、item.duration、item.callType。

此外,不要忘记将以下行添加到 AndroidManifest.xml

<uses-permission android:name="android.permission.READ_CALL_LOG" />

而不是 CallLog.get(),您还可以使用 CallLog.query() 来指定对 response/output 的约束,如问题本身所述。