正在查看: xDrip+ v04633772025.07.16 应用的 IncomingCallsReceiver.java JAVA 源代码文件
本页面展示 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;
}
}