call_log_utils.dart 2.88 KB
import 'dart:io';

import 'package:call_log/call_log.dart';
import 'package:flutter/material.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:permission_handler/permission_handler.dart';

import '../app.dart';
import 'misc.dart';

class CallLogUtils {
  static Future<Iterable<CallLogEntry>> getCallLog(context) async {
    try {
      
      if (!(await checkPermission(Permission.phone))) {
        String title = '通话记录和电话';
        PermissionStatus status = await permissionStatus(Permission.phone);
        if (status == PermissionStatus.permanentlyDenied) {
          //用户选择不在弹出权限提示框
          print('never');
          // Navigator.pop(context);
            BuildContext context1 = App.navigatorKey.currentState.overlay.context;
          DialogUtil.openAlertDialog(context1, '未获得${title}权限',
              "请在手机的权限管理里,将${title}权限开启", '去设置', 340.0, onTap: () {
            openSetting();
            Navigator.pop(context, '');
          });
        } else {
          // 申请权限
          bool canPhone = await checkPermission(Permission.phone);
          if (canPhone) {
            try {
              //全局提示权限使用目的
              if (Platform.isAndroid) {
                BuildContext context1 = App.navigatorKey.currentState.overlay.context;
                DialogUtil.showAuthorityDestination(context1, 'h_call',
                    '通话记录和电话权限使用说明', '直接从通话记录中获得客户电话号码,快速录入预订信息。');
              }

              Iterable<CallLogEntry> result = await CallLog.query();
              if(App.isShowDes){
        Navigator.pop(context);
      }
              return result;
            } catch (e) {
              print(e);
            }
          } else {
            // Navigator.pop(context);
            //拒绝通讯录权限 , 苹果拒绝权限后,不再提示权限框,进入此处
             BuildContext context1 = App.navigatorKey.currentState.overlay.context;
            DialogUtil.openAlertDialog(context1, '未获得${title}权限',
                "请在手机的权限管理里,将${title}权限开启。", '去设置', 340.0, onTap: () {
              openSetting();
              Navigator.pop(context, '');
            });
          }
        }
      } else {
        try {
          // //全局提示权限使用目的
          // if (Platform.isAndroid) {
          //   DialogUtil.showAuthorityDestination(context, 'h_call',
          //       '通话记录和电话权限使用说明', '直接从通话记录中获得客户电话号码,快速录入预订信息。');
          // }

          Iterable<CallLogEntry> result = await CallLog.query();
          return result;
        } catch (e) {
          print(e);
        }
      }
    } catch (e) {
      print(e);
      return null;
    }
  }
}