导航菜单

页面标题

页面副标题

xDrip+ v04633772025.07.16 - IncomingCallsReceiver.java 源代码

正在查看: xDrip+ v04633772025.07.16 应用的 IncomingCallsReceiver.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.eveningoutpost.dexdrip.utils.framework;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.ContactsContract;
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import androidx.core.app.ActivityCompat;
import com.eveningoutpost.dexdrip.models.JoH;
import com.eveningoutpost.dexdrip.models.UserError;
import com.eveningoutpost.dexdrip.utilitymodels.Inevitable;
import com.eveningoutpost.dexdrip.watch.lefun.LeFun;
import com.eveningoutpost.dexdrip.watch.lefun.LeFunEntry;
import com.eveningoutpost.dexdrip.watch.miband.MiBand;
import com.eveningoutpost.dexdrip.watch.miband.MiBandEntry;
import com.eveningoutpost.dexdrip.watch.thinjam.BlueJayEntry;
import com.eveningoutpost.dexdrip.xdrip;

public class IncomingCallsReceiver extends BroadcastReceiver {
    private static volatile boolean ringingNow = false;

    public static boolean isRingingNow() {
        return ringingNow;
    }

    public static void checkPermission(Activity activity) {
        int i = Build.VERSION.SDK_INT;
        if (xdrip.getAppContext().checkSelfPermission("android.permission.READ_PHONE_STATE") == 0 && xdrip.getAppContext().checkSelfPermission("android.permission.READ_CONTACTS") == 0 && (i <= 26 || xdrip.getAppContext().checkSelfPermission("android.permission.READ_CALL_LOG") == 0)) {
            return;
        }
        ActivityCompat.requestPermissions(activity, new String[]{"android.permission.READ_PHONE_STATE", "android.permission.READ_CALL_LOG", "android.permission.READ_CONTACTS"}, 1023);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String str;
        if (intent == null || intent.getExtras() == null) {
            return;
        }
        String string = intent.getExtras().getString("state");
        String string2 = intent.getExtras().getString("incoming_number");
        UserError.Log.d("IncomingCalls", "Call State: " + string + " " + string2);
        if (string != null && string.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            ringingNow = true;
            final String str2 = "CALL";
            if (JoH.quietratelimit("lefun-call-debounce", 10) && LeFunEntry.areCallAlertsEnabled()) {
                UserError.Log.d("IncomingCalls", "Sending call alert: " + string2);
                LeFun.sendAlert(true, string2 != null ? string2.substring(Math.max(0, string2.length() - 8)) : "CALL");
            }
            if (JoH.quietratelimit("miband-call-debounce", 10) && MiBandEntry.areCallAlertsEnabled()) {
                if (string2 != null) {
                    str = "Incoming Call " + getContactDisplayNameByNumber(string2) + " " + bestPhoneNumberFormatter(string2) + " ";
                } else {
                    str = "CALL";
                }
                UserError.Log.d("IncomingCalls", "Sending call alert: " + str);
                MiBand.sendCall("NOTIFY_TYPE_CALL", str);
            }
            if (JoH.quietratelimit("bluejay-call-debounce" + string2, 10) && BlueJayEntry.areCallAlertsEnabled()) {
                if (string2 != null) {
                    str2 = "Incoming Call " + getContactDisplayNameByNumber(string2) + " " + bestPhoneNumberFormatter(string2) + " ";
                }
                UserError.Log.d("IncomingCalls", "Sending call alert: " + str2);
                Inevitable.kill("bluejay-wait-caller-id");
                Inevitable.task("bluejay-wait-caller-id", 200L, new Runnable() {
                    @Override
                    public final void run() {
                        BlueJayEntry.sendNotifyIfEnabled("THINJAM_NOTIFY_TYPE_CALL", str2);
                    }
                });
                return;
            }
            return;
        }
        if (ringingNow) {
            ringingNow = false;
            UserError.Log.d("IncomingCalls", "Ringing stopped: " + string);
            if (JoH.ratelimit("incoming-call-stopped", 10) && BlueJayEntry.areCallAlertsEnabled()) {
                BlueJayEntry.cancelNotifyIfEnabled();
                MiBand.sendCall("NOTIFY_TYPE_CANCEL", "");
            }
        }
    }

    private static String bestPhoneNumberFormatter(String str) {
        if (str == null) {
            return null;
        }
        String formatNumber = PhoneNumberUtils.formatNumber(str);
        if (formatNumber.contains(" ")) {
            return formatNumber;
        }
        StringBuilder sb = new StringBuilder();
        int i = 0;
        for (char c : str.toCharArray()) {
            sb.append(c);
            i++;
            if (i == 5) {
                sb.append(" ");
            }
        }
        return sb.toString();
    }

    public String getContactDisplayNameByNumber(String str) {
        String str2 = "Unknown";
        try {
            Cursor query = xdrip.getAppContext().getContentResolver().query(Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(str)), null, null, null, null);
            if (query != null) {
                try {
                    if (query.getCount() > 0) {
                        query.moveToNext();
                        str2 = query.getString(query.getColumnIndex("display_name"));
                    }
                } finally {
                    query.close();
                }
            }
            if (query != null) {
            }
        } catch (SecurityException unused) {
            JoH.static_toast_long("xDrip needs contacts permission to get names from numbers");
        }
        return str2;
    }
}