支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话)

This commit is contained in:
pppscn 2021-03-02 23:40:08 +08:00
parent b171dcb14e
commit 13a6a79644
21 changed files with 136 additions and 48 deletions

View File

@ -73,15 +73,17 @@ Android手机监听短信并根据指定规则转发到其他手机、钉钉机
| ![添加编辑发送方邮箱](pic/sendersetemail.png "添加编辑发送方邮箱") | ![添加编辑发送方Bark](pic/sendersetbark.png "添加编辑发送方Bark") |
| ![添加编辑发送方网页通知](pic/sendersetwebnotify.png "添加编辑发送方网页通知") | ![添加编辑发送方企业微信群机器人](pic/sendersetqywechat.png "添加编辑发送方企业微信群机器人") |
| ![状态栏运行状态](pic/taskbar.png "状态栏运行状态") | ![应用设置](pic/setting.png "应用设置") |
| ![在线升级](pic/update.png "在线升级") | ![转发日志详情增加卡槽标识](pic/siminfo.png "转发日志详情增加卡槽标识") |
| ![在线升级](pic/update.png "在线升级") | ![增加卡槽标识](pic/siminfo.png "增加卡槽标识") |
--------
## 更新记录:
> [v1.2.3](app/release/SmsForwarder_release_20210302_1.2.3.apk) 转发日志详情增加卡槽标识SIM1 或 SIM2
> [v1.3.0](app/release/SmsForwarder_release_20210302_1.3.0.apk) 支持双卡手机,增加卡槽标识/运营商/手机号(如果能获取的话)
> [v1.2.2](app/release/SmsForwarder_release_20210302_1.2.2.apk) 短信模板增加卡槽标识SIM-0_中国联通_Unknown 或 SIM-1_中国移动_+8615866666666
> [v1.2.3](app/release/SmsForwarder_release_20210302_1.2.3.apk) 【预发布】转发日志列表/详情增加卡槽标识SIM1 或 SIM2
> [v1.2.2](app/release/SmsForwarder_release_20210302_1.2.2.apk) 【预发布】短信模板增加卡槽标识SIM1_中国联通_Unknown 或 SIM2_中国移动_+8615866666666
> [v1.2.1](app/release/SmsForwarder_release_20210226_1.2.1.apk) 修复bark-server升级到2.0后的兼容性问题

View File

@ -14,8 +14,8 @@ android {
applicationId "com.idormy.sms.forwarder"
minSdkVersion 23
targetSdkVersion 28
versionCode 9
versionName "1.2.3"
versionCode 10
versionName "1.3.0"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
signingConfigs {

Binary file not shown.

View File

@ -10,9 +10,9 @@
{
"type": "SINGLE",
"filters": [],
"versionCode": 9,
"versionName": "1.2.3",
"outputFile": "SmsForwarder_release_20210302_1.2.3.apk"
"versionCode": 10,
"versionName": "1.3.0",
"outputFile": "SmsForwarder_release_20210302_1.3.0.apk"
}
]
}

View File

@ -37,7 +37,8 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver {
String simInfoId = String.valueOf(capturedSimSlot(extras));
Log.d("SIM_SLOT", " Slot Number " + simInfoId);
Map<String, String> sim = MyApplication.SimInfo.get(simInfoId);
String phoneNumber = "SIM-" + sim.get("sim_id") + "_" + sim.get("carrier_name") + "_" + sim.get("phone_number");
int sim_id = Integer.parseInt(sim.get("sim_id")) + 1;
String phoneNumber = "SIM" + sim_id + "_" + sim.get("carrier_name") + "_" + sim.get("phone_number");
List<SmsVo> smsVoList = new ArrayList<>();
String format = intent.getStringExtra("format");

View File

@ -254,7 +254,6 @@ public class MainActivity extends AppCompatActivity implements ReFlashListView.I
MyApplication.SimInfo.put(id, sim);
}
cursor.close();
Log.d(TAG, String.valueOf(MyApplication.SimInfo.get("2").get("sim_id")));
}
}

View File

@ -10,6 +10,7 @@ import android.widget.TextView;
import com.idormy.sms.forwarder.R;
import com.idormy.sms.forwarder.model.vo.LogVo;
import com.idormy.sms.forwarder.utils.aUtil;
import java.util.List;
@ -57,7 +58,9 @@ public class LogAdapter extends ArrayAdapter<LogVo> {
viewHolder.tLogFrom = view.findViewById(R.id.tlog_from);
viewHolder.tLogContent = view.findViewById(R.id.tlog_content);
viewHolder.tLogRule = view.findViewById(R.id.tlog_rule);
viewHolder.tLogTime = view.findViewById(R.id.tlog_time);
viewHolder.senderImage = view.findViewById(R.id.tlog_sender_image);
viewHolder.simImage = view.findViewById(R.id.tlog_sim_image);
// 将ViewHolder存储在View中即将控件的实例存储在其中
view.setTag(viewHolder);
@ -71,7 +74,9 @@ public class LogAdapter extends ArrayAdapter<LogVo> {
viewHolder.tLogFrom.setText(logVo.getFrom());
viewHolder.tLogContent.setText(logVo.getContent());
viewHolder.tLogRule.setText(logVo.getRule());
viewHolder.tLogTime.setText(aUtil.friendlyTime(logVo.getTime()));
viewHolder.senderImage.setImageResource(logVo.getSenderImageId());
viewHolder.simImage.setImageResource(logVo.getSimImageId());
}
return view;
@ -108,6 +113,8 @@ public class LogAdapter extends ArrayAdapter<LogVo> {
TextView tLogFrom;
TextView tLogContent;
TextView tLogRule;
TextView tLogTime;
ImageView senderImage;
ImageView simImage;
}
}

View File

@ -1,5 +1,7 @@
package com.idormy.sms.forwarder.model.vo;
import com.idormy.sms.forwarder.R;
public class LogVo {
private String from;
private String content;
@ -64,4 +66,17 @@ public class LogVo {
public void setSenderImageId(int senderImageId) {
this.senderImageId = senderImageId;
}
public int getSimImageId() {
if (this.simInfo == null) {
return R.mipmap.sim1;
}
String sim = this.simInfo.replace("-", "").substring(0, 4).toLowerCase();
if (sim == "sim2") {
return R.mipmap.sim2;
} else {
return R.mipmap.sim1;
}
}
}

View File

@ -4,10 +4,14 @@ import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
public class aUtil {
@ -53,4 +57,44 @@ public class aUtil {
Integer versionCode = packInfo.versionCode;
return versionCode;
}
//友好时间显示
public static String friendlyTime(String sdate) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date time = null;
try {
time = sf.parse(sdate);
} catch (ParseException e) {
e.printStackTrace();
}
Log.d(TAG, time.getTime() + "");
//获取time距离当前的秒数
int ct = (int) ((System.currentTimeMillis() - time.getTime()) / 1000);
if (ct == 0) {
return "刚刚";
}
if (ct > 0 && ct < 60) {
return ct + "秒前";
}
if (ct >= 60 && ct < 3600) {
return Math.max(ct / 60, 1) + "分钟前";
}
if (ct >= 3600 && ct < 86400) {
return ct / 3600 + "小时前";
}
if (ct >= 86400 && ct < 2592000) { //86400 * 30
int day = ct / 86400;
return day + "天前";
}
if (ct >= 2592000 && ct < 31104000) { //86400 * 30
return ct / 2592000 + "月前";
}
return ct / 31104000 + "年前";
}
}

View File

@ -1,45 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<RelativeLayout
<ImageView
android:id="@+id/tlog_sender_image"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip">
<TextView
android:id="@+id/tlog_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginStart="10dp"
android:textColor="@android:color/black"
android:textColorHighlight="@android:color/holo_red_dark" />
<TextView
android:id="@+id/tlog_rule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="10dp"
android:visibility="gone" />
<ImageView
android:id="@+id/tlog_sender_image"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
<TextView
android:id="@+id/tlog_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp" />
</LinearLayout>
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip">
<TextView
android:id="@+id/tlog_from"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginLeft="10dp" />
<TextView
android:id="@+id/tlog_rule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
<TextView
android:id="@+id/tlog_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginRight="24dp" />
<ImageView
android:id="@+id/tlog_sim_image"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true" />
</RelativeLayout>
<TextView
android:id="@+id/tlog_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp" />
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 111 KiB