call_log_utils.dart
2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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();
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;
}
}
}