-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1055,"versionName":"2203081057","enabled":true,"outputFile":"ICSer_V1055_2203081057_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V1055_2203081057_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1058,"versionName":"2203081559","enabled":true,"outputFile":"ICSer_V1058_2203081559_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V1058_2203081559_release.apk","properties":{}}]
\ No newline at end of file
import android.database.Cursor;
import android.media.AudioManager;
import android.net.Uri;
+import android.os.Handler;
+import android.os.Message;
import android.os.SystemClock;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
+import com.android.internal.telephony.ITelephony;
import com.enqualcomm.support.provider.ICDatabaseHelper;
import com.enqualcomm.support.provider.ICNotificationProvider;
import com.enqualcomm.support.utils.ICLogger;
+import com.enqualcomm.support.utils.ProjectUtils;
import com.enqualcomm.support.utils.Util;
+import java.lang.reflect.Method;
+
import static com.enqualcomm.support.provider.ICGlobalSettingsProvider.SETTINGS;
import static com.enqualcomm.support.provider.ICMembersProvider.MEMBERS;
private final Context mContext;
private final AudioManager mAudioManager;
+ private static final int AUTO_ANSWER_DURATION = 12000;
+
public PhoneCallListener(Context context) {
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
this.mContext = context;
public void onCallStateChanged(int state, String phoneNumber) {
ICLogger.d("state == > " + state);
ICLogger.d("phoneNumber == > " + phoneNumber);
+ switch (state) {
+ //待机中
+ case TelephonyManager.CALL_STATE_IDLE:
+ if(mHandler != null) {
+ if (mHandler.hasMessages(0)) {
+ mHandler.removeMessages(0);
+ }
+ }
+ break;
+ //通话中
+ case TelephonyManager.CALL_STATE_OFFHOOK:
+ break;
+ //来电响铃中
+ case TelephonyManager.CALL_STATE_RINGING:
+ if(phoneNumber != null && isWhitePhoneNumName(phoneNumber)){
+ if(mHandler != null) {
+ if (mHandler.hasMessages(0)) {
+ mHandler.removeMessages(0);
+ }
+ mHandler.sendEmptyMessageDelayed(0,AUTO_ANSWER_DURATION);
+ }
+ }
+ break;
+ }
+
if (state == TelephonyManager.CALL_STATE_IDLE) {
new Thread(() -> {
SystemClock.sleep(2 * 1000);
}, PhoneStateListener.LISTEN_CALL_STATE);
}
+ private Handler mHandler = new Handler(){
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ if(ProjectUtils.isGator()) {
+ ICLogger.d(AUTO_ANSWER_DURATION + "秒自动接听");
+ answerCall();
+ }
+ }
+ };
+
+ public synchronized void answerCall() {
+ try {
+ TelephonyManager mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ Method getITelephonyMethod = mTelephonyManager.getClass().getDeclaredMethod("getITelephony");
+ getITelephonyMethod.setAccessible(true);
+ ITelephony iTelephony = (ITelephony) getITelephonyMethod.invoke(mTelephonyManager);
+ iTelephony.answerRingingCall();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
public void updateVolume(int progress) {
ICLogger.d("progress ==> " + progress);
//进行换算
}
+ private boolean isWhitePhoneNumName(String phoneNumber) {
+ Cursor query = mContext.getContentResolver().query(Uri.parse(MEMBERS), null, "phone_num=?", new String[]{phoneNumber}, null);
+ if (query != null) {
+ int count = query.getCount();
+ Log.d(TAG, "count ==> " + count);
+ if(count > 0){
+ return true;
+ }
+ }
+ return false;
+ }
+
private void createNotification(String phoneNum) {
Log.d(TAG, "createNotification ===> " + phoneNum);
//解析一下电话名称