mirror of
https://github.com/pppscn/SmsForwarder
synced 2024-11-19 15:25:45 +00:00
修复:来电转发的卡槽信息不准确(异常处理:获取卡槽失败时,默认为卡槽1)
This commit is contained in:
parent
ee1c21b8cb
commit
8f1af5afc0
@ -96,9 +96,15 @@ public class PhoneStateReceiver extends BroadcastReceiver {
|
|||||||
Log.d(TAG, callInfo.toString());
|
Log.d(TAG, callInfo.toString());
|
||||||
String name = callInfo.getName();
|
String name = callInfo.getName();
|
||||||
String viaNumber = callInfo.getViaNumber(); //来源号码
|
String viaNumber = callInfo.getViaNumber(); //来源号码
|
||||||
|
|
||||||
|
//卡槽判断:获取卡槽失败时,默认为卡槽1
|
||||||
|
String simInfo = "";
|
||||||
|
int simId = 1;
|
||||||
Log.d(TAG, "getSubscriptionId = " + callInfo.getSubscriptionId()); //TODO:这里的SubscriptionId跟短信的不一样
|
Log.d(TAG, "getSubscriptionId = " + callInfo.getSubscriptionId()); //TODO:这里的SubscriptionId跟短信的不一样
|
||||||
int simId = SimUtil.getSimIdBySubscriptionId(callInfo.getSubscriptionId());
|
if (callInfo.getSubscriptionId() != -1) {
|
||||||
String simInfo = simId == 2 ? SettingUtil.getAddExtraSim2() : SettingUtil.getAddExtraSim1(); //自定义备注优先
|
simId = SimUtil.getSimIdBySubscriptionId(callInfo.getSubscriptionId());
|
||||||
|
}
|
||||||
|
simInfo = simId == 2 ? SettingUtil.getAddExtraSim2() : SettingUtil.getAddExtraSim1(); //自定义备注优先
|
||||||
simInfo = "SIM" + simId + "_" + simInfo;
|
simInfo = "SIM" + simId + "_" + simInfo;
|
||||||
|
|
||||||
if (TextUtils.isEmpty(name)) {
|
if (TextUtils.isEmpty(name)) {
|
||||||
@ -136,7 +142,7 @@ public class PhoneStateReceiver extends BroadcastReceiver {
|
|||||||
String str = context.getString(R.string.linkman) + name + "\n";
|
String str = context.getString(R.string.linkman) + name + "\n";
|
||||||
if (!TextUtils.isEmpty(viaNumber)) str += context.getString(R.string.via_number) + viaNumber + "\n";
|
if (!TextUtils.isEmpty(viaNumber)) str += context.getString(R.string.via_number) + viaNumber + "\n";
|
||||||
str += context.getString(R.string.mandatory_type);
|
str += context.getString(R.string.mandatory_type);
|
||||||
if (type == 3) return str + context.getString(R.string.received_call);
|
if (type == 1) return str + context.getString(R.string.received_call);
|
||||||
if (type == 2) return str + context.getString(R.string.local_outgoing_call);
|
if (type == 2) return str + context.getString(R.string.local_outgoing_call);
|
||||||
return str + context.getString(R.string.missed_call);
|
return str + context.getString(R.string.missed_call);
|
||||||
}
|
}
|
||||||
|
@ -539,31 +539,38 @@ public class PhoneUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String[] columns = {CallLog.Calls.CACHED_NAME, //通话记录的联系人
|
/*String[] columns = {CallLog.Calls.CACHED_NAME, //通话记录的联系人
|
||||||
CallLog.Calls.NUMBER, //通话记录的电话号码
|
CallLog.Calls.NUMBER, //通话记录的电话号码
|
||||||
CallLog.Calls.DATE, //通话记录的日期
|
CallLog.Calls.DATE, //通话记录的日期
|
||||||
CallLog.Calls.DURATION, //通话时长
|
CallLog.Calls.DURATION, //通话时长
|
||||||
CallLog.Calls.TYPE, //通话类型
|
CallLog.Calls.TYPE, //通话类型
|
||||||
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N ? CallLog.Calls.VIA_NUMBER : ""), //来源号码
|
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N ? CallLog.Calls.VIA_NUMBER : ""), //来源号码
|
||||||
"simid" //卡槽ID
|
"simid" //卡槽ID
|
||||||
};
|
};*/
|
||||||
|
|
||||||
CallInfo callInfo;
|
CallInfo callInfo;
|
||||||
Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, columns,
|
Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, null,
|
||||||
CallLog.Calls.NUMBER + " like ?",
|
CallLog.Calls.NUMBER + " like ?",
|
||||||
new String[]{phoneNumber + "%"}, CallLog.Calls.DEFAULT_SORT_ORDER);
|
new String[]{phoneNumber + "%"}, CallLog.Calls.DEFAULT_SORT_ORDER);
|
||||||
Log.i(TAG, "cursor count:" + cursor.getCount());
|
Log.i(TAG, "cursor count:" + cursor.getCount());
|
||||||
|
|
||||||
//noinspection LoopStatementThatDoesntLoop
|
//noinspection LoopStatementThatDoesntLoop
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
|
int simColumnIndex = -1;
|
||||||
|
if (cursor.getColumnIndex("simid") != -1) {
|
||||||
|
simColumnIndex = cursor.getColumnIndex("simid");
|
||||||
|
} else if (cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID) != -1) {
|
||||||
|
simColumnIndex = cursor.getColumnIndex(CallLog.Calls.PHONE_ACCOUNT_ID);
|
||||||
|
}
|
||||||
|
|
||||||
callInfo = new CallInfo(
|
callInfo = new CallInfo(
|
||||||
cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)), //姓名
|
cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)), //姓名
|
||||||
cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)), //号码
|
cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)), //号码
|
||||||
cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)), //获取通话日期
|
cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)), //获取通话日期
|
||||||
cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION)),//获取通话时长,值为多少秒
|
cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION)),//获取通话时长,值为多少秒
|
||||||
cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)), //获取通话类型:1.呼入2.呼出3.未接
|
cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)), //获取通话类型:1.呼入2.呼出3.未接
|
||||||
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N ? cursor.getString(cursor.getColumnIndex(CallLog.Calls.VIA_NUMBER)) : null), //来源号码
|
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N && cursor.getColumnIndex("via_number") != -1 ? cursor.getString(cursor.getColumnIndex(CallLog.Calls.VIA_NUMBER)) : null), //来源号码
|
||||||
cursor.getInt(cursor.getColumnIndex("simid")) //卡槽id
|
simColumnIndex != -1 ? cursor.getInt(simColumnIndex) : -1 //卡槽id
|
||||||
);
|
);
|
||||||
Log.d(TAG, callInfo.toString());
|
Log.d(TAG, callInfo.toString());
|
||||||
cursor.close();
|
cursor.close();
|
||||||
|
Loading…
Reference in New Issue
Block a user