|
|
@@ -5,10 +5,10 @@ import {
|
|
5
|
5
|
toCallAutoRecorderPage,
|
|
6
|
6
|
navigateToCallRecordingSettings,
|
|
7
|
7
|
jumpToPermissionPage,
|
|
8
|
|
- makePhoneCall,
|
|
9
|
8
|
allRecorderFilesAction
|
|
10
|
9
|
} from '@/uni_modules/yao-lister';
|
|
11
|
10
|
import permision from "@/js_sdk/wa-permission/permission.js";
|
|
|
11
|
+import { formatPhoneNumber } from '../../utils/util';
|
|
12
|
12
|
|
|
13
|
13
|
export default {
|
|
14
|
14
|
namespaced: true,
|
|
|
@@ -52,6 +52,12 @@ export default {
|
|
52
|
52
|
SET_READ_PHONE_NUMBERS_PERMISSION: (state, value) => {
|
|
53
|
53
|
state.hasReadPhoneNumbersPermission = value;
|
|
54
|
54
|
},
|
|
|
55
|
+ SET_CALLER_PHONE: (state, phoneNumber) => {
|
|
|
56
|
+ state.form.caller = phoneNumber;
|
|
|
57
|
+ },
|
|
|
58
|
+ SET_FORM: (state, data) => {
|
|
|
59
|
+ state.form = data;
|
|
|
60
|
+ },
|
|
55
|
61
|
},
|
|
56
|
62
|
actions: {
|
|
57
|
63
|
getFileList({dispatch,state, commit}) {
|
|
|
@@ -123,6 +129,68 @@ export default {
|
|
123
|
129
|
|
|
124
|
130
|
},
|
|
125
|
131
|
|
|
|
132
|
+ // 获取用户手机号码
|
|
|
133
|
+ getUserPhoneNumber({ commit }) {
|
|
|
134
|
+ return new Promise((resolve, reject) => {
|
|
|
135
|
+ // 首先检查权限
|
|
|
136
|
+ permision.requestAndroidPermission('android.permission.READ_PHONE_NUMBERS')
|
|
|
137
|
+ .then(result => {
|
|
|
138
|
+ if (result === 1) {
|
|
|
139
|
+ // 权限被授予,获取手机号码
|
|
|
140
|
+ try {
|
|
|
141
|
+ const main = plus.android.runtimeMainActivity();
|
|
|
142
|
+ const Context = plus.android.importClass('android.content.Context');
|
|
|
143
|
+ const TelephonyManager = plus.android.importClass('android.telephony.TelephonyManager');
|
|
|
144
|
+
|
|
|
145
|
+ const telephonyManager = main.getSystemService(Context.TELEPHONY_SERVICE);
|
|
|
146
|
+ const phoneNumber = telephonyManager.getLine1Number();
|
|
|
147
|
+
|
|
|
148
|
+ if (phoneNumber && phoneNumber.trim() !== '') {
|
|
|
149
|
+ // 移除国际区号,保留手机号码
|
|
|
150
|
+ const cleanPhoneNumber = formatPhoneNumber(phoneNumber);
|
|
|
151
|
+ commit('SET_CALLER_PHONE', cleanPhoneNumber);
|
|
|
152
|
+ resolve(cleanPhoneNumber);
|
|
|
153
|
+ } else {
|
|
|
154
|
+ // 如果获取不到手机号码,尝试使用备选方法
|
|
|
155
|
+ try {
|
|
|
156
|
+ const SubscriptionManager = plus.android.importClass('android.telephony.SubscriptionManager');
|
|
|
157
|
+ const subscriptionManager = main.getSystemService(Context.TELEPHONY_SERVICE);
|
|
|
158
|
+ const activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
|
|
|
159
|
+
|
|
|
160
|
+ if (activeSubscriptionInfoList && activeSubscriptionInfoList.size() > 0) {
|
|
|
161
|
+ const subscriptionInfo = activeSubscriptionInfoList.get(0);
|
|
|
162
|
+ const number = subscriptionInfo.getNumber();
|
|
|
163
|
+ if (number && number.trim() !== '') {
|
|
|
164
|
+ // 移除国际区号,保留手机号码
|
|
|
165
|
+ const cleanPhoneNumber = formatPhoneNumber(number);
|
|
|
166
|
+ commit('SET_CALLER_PHONE', cleanPhoneNumber);
|
|
|
167
|
+ resolve(cleanPhoneNumber);
|
|
|
168
|
+ } else {
|
|
|
169
|
+ reject(new Error('无法获取手机号码:SIM卡可能未激活或号码无效'));
|
|
|
170
|
+ }
|
|
|
171
|
+ } else {
|
|
|
172
|
+ reject(new Error('无法获取手机号码:未检测到有效的SIM卡'));
|
|
|
173
|
+ }
|
|
|
174
|
+ } catch (fallbackError) {
|
|
|
175
|
+ console.error('备选方法获取手机号码失败:', fallbackError);
|
|
|
176
|
+ reject(new Error('无法获取手机号码:设备可能不支持或运营商限制'));
|
|
|
177
|
+ }
|
|
|
178
|
+ }
|
|
|
179
|
+ } catch (error) {
|
|
|
180
|
+ console.error('获取手机号码失败:', error);
|
|
|
181
|
+ reject(new Error('获取手机号码失败: ' + error.message));
|
|
|
182
|
+ }
|
|
|
183
|
+ } else {
|
|
|
184
|
+ reject(new Error('没有获取手机号码的权限,请前往设置开启权限'));
|
|
|
185
|
+ }
|
|
|
186
|
+ })
|
|
|
187
|
+ .catch(error => {
|
|
|
188
|
+ console.error('请求权限失败:', error);
|
|
|
189
|
+ reject(error);
|
|
|
190
|
+ });
|
|
|
191
|
+ });
|
|
|
192
|
+ },
|
|
|
193
|
+
|
|
126
|
194
|
// 检查所有权限状态
|
|
127
|
195
|
checkAllPermissions({ commit }) {
|
|
128
|
196
|
return new Promise((resolve, reject) => {
|