diff --git a/.gitignore b/.gitignore
index 03130465..2c51b7e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ gradle.properties
/app/release/*
/app/build/*
/psd
+/keystore/keystore.properties
diff --git a/app/build.gradle b/app/build.gradle
index 6f6a63da..a64e68e8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -58,7 +58,7 @@ android {
}
}
//apk file name
-/* android.applicationVariants.all { variant ->
+ android.applicationVariants.all { variant ->
variant.outputs.all {
//def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("Asia/Shanghai"))
def date = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08"))
@@ -69,7 +69,7 @@ android {
outputFileName = "SmsForwarder_release_${date}_${versionName}.apk"
}
}
- }*/
+ }
}
@@ -129,9 +129,10 @@ dependencies {
implementation "com.alibaba:fastjson:1.2.78"
// 友盟统计SDK
- implementation 'com.umeng.umsdk:common:9.4.4'// 必选
- implementation 'com.umeng.umsdk:asms:1.4.1'// 必选
- implementation 'com.umeng.umsdk:apm:1.4.2' // 错误分析升级为独立SDK,看crash数据请一定集成,可选
+ //友盟基础组件库(所有友盟业务SDK都依赖基础组件库)
+ implementation 'com.umeng.umsdk:common:9.3.8'
+ implementation 'com.umeng.umsdk:asms:1.2.2'
+ implementation 'com.umeng.umsdk:abtest:1.0.0'
//XUpdate
implementation 'com.github.xuexiangjys:XUpdate:2.1.0'
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 562e1ca6..43766b82 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -1,5 +1,5 @@
{
- "version": 2,
+ "version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
@@ -10,9 +10,11 @@
{
"type": "SINGLE",
"filters": [],
- "versionCode": 25,
- "versionName": "1.7.4",
- "outputFile": "SmsForwarder_release_20210715_1.7.4.apk"
+ "attributes": [],
+ "versionCode": 26,
+ "versionName": "2.0.0",
+ "outputFile": "SmsForwarder_release_20210929_2.0.0.apk"
}
- ]
+ ],
+ "elementType": "File"
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c5328a67..96f63822 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,6 +17,7 @@
+
diff --git a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
index 896f64e4..40d2bef8 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
@@ -27,13 +27,13 @@ import com.idormy.sms.forwarder.utils.aUtil;
import java.util.ArrayList;
import java.util.List;
-public class MainActivity extends AppCompatActivity implements ReFlashListView.IRefreshListener {
+public class MainActivity extends AppCompatActivity implements RefreshListView.IRefreshListener {
private final String TAG = "MainActivity";
// logVoList用于存储数据
private List logVos = new ArrayList<>();
private LogAdapter adapter;
- private ReFlashListView listView;
+ private RefreshListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/com/idormy/sms/forwarder/ReFlashListView.java b/app/src/main/java/com/idormy/sms/forwarder/RefreshListView.java
similarity index 96%
rename from app/src/main/java/com/idormy/sms/forwarder/ReFlashListView.java
rename to app/src/main/java/com/idormy/sms/forwarder/RefreshListView.java
index b1aeb302..c84e3e89 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/ReFlashListView.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/RefreshListView.java
@@ -22,8 +22,8 @@ import java.util.Locale;
* 自定义listview
*/
@SuppressWarnings({"CommentedOutCode", "unused"})
-public class ReFlashListView extends ListView implements AbsListView.OnScrollListener {
- //private static final String TAG = "ReFlashListView";
+public class RefreshListView extends ListView implements AbsListView.OnScrollListener {
+ //private static final String TAG = "RefreshListView";
final int NONE = 0;// 正常状态;
final int PULL = 1;// 提示下拉状态;
final int RELEASE = 2;// 提示释放状态;
@@ -37,19 +37,19 @@ public class ReFlashListView extends ListView implements AbsListView.OnScrollLis
int state;// 当前的状态;
IRefreshListener iRefreshListener;//刷新数据的接口
- public ReFlashListView(Context context) {
+ public RefreshListView(Context context) {
super(context);
// TODO Auto-generated constructor stub
initView(context);
}
- public ReFlashListView(Context context, AttributeSet attrs) {
+ public RefreshListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initView(context);
}
- public ReFlashListView(Context context, AttributeSet attrs, int defStyle) {
+ public RefreshListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
initView(context);
diff --git a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java
index 711a03ab..32d06ecb 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java
@@ -137,7 +137,7 @@ public class SettingActivity extends AppCompatActivity {
//设置低电量报警值
private void editBatteryLevelAlarm(final EditText et_battery_level_alarm) {
- et_battery_level_alarm.setText(SettingUtil.getBatteryLevelAlarm());
+ et_battery_level_alarm.setText(String.valueOf(SettingUtil.getBatteryLevelAlarm()));
et_battery_level_alarm.addTextChangedListener(new TextWatcher() {
@Override
@@ -150,7 +150,7 @@ public class SettingActivity extends AppCompatActivity {
@Override
public void afterTextChanged(Editable s) {
- SettingUtil.setBatteryLevelAlarm(et_battery_level_alarm.getText().toString());
+ SettingUtil.setBatteryLevelAlarm(Integer.parseInt(et_battery_level_alarm.getText().toString()));
}
});
}
@@ -158,7 +158,7 @@ public class SettingActivity extends AppCompatActivity {
//接口请求失败重试
private void editRetryDelayTime(final EditText et_retry_delay_time, final int index) {
- et_retry_delay_time.setText(SettingUtil.getRetryDelayTime(index));
+ et_retry_delay_time.setText(String.valueOf(SettingUtil.getRetryDelayTime(index)));
et_retry_delay_time.addTextChangedListener(new TextWatcher() {
@Override
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
index 1430bafa..83e821bc 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
@@ -8,6 +8,9 @@ import lombok.Data;
public class BarkSettingVo implements Serializable {
private String server;
+ public BarkSettingVo() {
+ }
+
public BarkSettingVo(String server) {
this.server = server;
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/DingDingSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/DingDingSettingVo.java
index 16dac7e9..69042760 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/DingDingSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/DingDingSettingVo.java
@@ -11,6 +11,9 @@ public class DingDingSettingVo implements Serializable {
private String atMobiles;
private Boolean atAll;
+ public DingDingSettingVo() {
+ }
+
public DingDingSettingVo(String token, String secret, String atMobiles, Boolean atAll) {
this.token = token;
this.secret = secret;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/EmailSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/EmailSettingVo.java
index 0f2b35e7..19f31aeb 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/EmailSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/EmailSettingVo.java
@@ -14,6 +14,9 @@ public class EmailSettingVo implements Serializable {
private String pwd;
private String toEmail;
+ public EmailSettingVo() {
+ }
+
public EmailSettingVo(String host, String port, Boolean ssl, String fromEmail, String nickname, String pwd, String toEmail) {
this.host = host;
this.port = port;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
index 0998c486..4ce58e87 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/FeiShuSettingVo.java
@@ -9,6 +9,9 @@ public class FeiShuSettingVo implements Serializable {
private String webhook;
private String secret;
+ public FeiShuSettingVo() {
+ }
+
public FeiShuSettingVo(String webhook, String secret) {
this.webhook = webhook;
this.secret = secret;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java
index 3ed636cd..e7d8c59c 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/LogVo.java
@@ -16,6 +16,9 @@ public class LogVo {
private int forwardStatus;
private String forwardResponse;
+ public LogVo() {
+ }
+
public LogVo(Long id, String from, String content, String simInfo, String time, String rule, int senderImageId, int forwardStatus, String forwardResponse) {
this.id = id;
this.from = from;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXAppSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXAppSettingVo.java
index 28ba9441..155a1a89 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXAppSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXAppSettingVo.java
@@ -12,6 +12,9 @@ public class QYWXAppSettingVo implements Serializable {
private String toUser;
private Boolean atAll;
+ public QYWXAppSettingVo() {
+ }
+
public QYWXAppSettingVo(String corpID, String agentID, String secret, String toUser, Boolean atAll) {
this.corpID = corpID;
this.agentID = agentID;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXGroupRobotSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXGroupRobotSettingVo.java
index cf7e27ee..7a00fffe 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXGroupRobotSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/QYWXGroupRobotSettingVo.java
@@ -8,6 +8,9 @@ import lombok.Data;
public class QYWXGroupRobotSettingVo implements Serializable {
private String webHook;
+ public QYWXGroupRobotSettingVo() {
+ }
+
public QYWXGroupRobotSettingVo(String webHook) {
this.webHook = webHook;
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/ServerChanSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/ServerChanSettingVo.java
index 43a353ff..b1f2eb72 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/ServerChanSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/ServerChanSettingVo.java
@@ -8,6 +8,9 @@ import lombok.Data;
public class ServerChanSettingVo implements Serializable {
private String sendKey;
+ public ServerChanSettingVo() {
+ }
+
public ServerChanSettingVo(String sendKey) {
this.sendKey = sendKey;
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsSettingVo.java
index ea65a2c1..6824ee3f 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsSettingVo.java
@@ -12,6 +12,9 @@ public class SmsSettingVo implements Serializable {
private String mobiles;
private Boolean onlyNoNetwork;
+ public SmsSettingVo() {
+ }
+
public SmsSettingVo(int simSlot, String mobiles, Boolean onlyNoNetwork) {
this.simSlot = simSlot;
this.mobiles = mobiles;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsVo.java
index 526d9167..f1ab3dcd 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/SmsVo.java
@@ -19,6 +19,9 @@ public class SmsVo implements Serializable {
Date date;
String simInfo;
+ public SmsVo() {
+ }
+
public SmsVo(String mobile, String content, Date date, String simInfo) {
this.mobile = mobile;
this.content = content;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
index 0d138af7..6c3a8c35 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/TelegramSettingVo.java
@@ -9,6 +9,9 @@ public class TelegramSettingVo implements Serializable {
private String apiToken;
private String chatId;
+ public TelegramSettingVo() {
+ }
+
public TelegramSettingVo(String apiToken, String chatId) {
this.apiToken = apiToken;
this.chatId = chatId;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java
index d7072072..ef9cc0df 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/WebNotifySettingVo.java
@@ -13,6 +13,9 @@ public class WebNotifySettingVo implements Serializable {
private String method;
private String webParams;
+ public WebNotifySettingVo() {
+ }
+
public WebNotifySettingVo(String webServer, String secret, String method, String webParams) {
this.webServer = webServer;
this.secret = secret;
diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/FrontService.java b/app/src/main/java/com/idormy/sms/forwarder/service/FrontService.java
index 02aec0f0..f2ab572d 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/service/FrontService.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/service/FrontService.java
@@ -95,7 +95,7 @@ public class FrontService extends Service {
public void run() {
int batteryLevel = getBatteryLevel();
System.out.println("当前剩余电量:" + batteryLevel + "%");
- int batteryLevelAlarm = Integer.parseInt(SettingUtil.getBatteryLevelAlarm());
+ int batteryLevelAlarm = SettingUtil.getBatteryLevelAlarm();
if (alarmTimes[0] <= 1 && batteryLevelAlarm > 0 && batteryLevelAlarm <= 100 && batteryLevel == batteryLevelAlarm) {
Date date = new Date();
String msg = "当前剩余电量:" + batteryLevel + "%,已经到达低电量预警阈值,请及时充电!";
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CertUtils.java b/app/src/main/java/com/idormy/sms/forwarder/utils/CertUtils.java
index 283138bc..2bb01898 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/CertUtils.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CertUtils.java
@@ -14,6 +14,7 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
+@SuppressLint("TrustAllX509TrustManager")
public class CertUtils {
//获取这个SSLSocketFactory
@@ -31,12 +32,10 @@ public class CertUtils {
private static TrustManager[] getTrustManager() {
return new TrustManager[]{
new X509TrustManager() {
- @SuppressLint("TrustAllX509TrustManager")
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
- @SuppressLint("TrustAllX509TrustManager")
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.java b/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.java
index a89d50aa..bf81e90c 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.java
@@ -269,6 +269,7 @@ public class PhoneUtils {
*
* @return 返回卡槽数
*/
+ @SuppressLint("ObsoleteSdkInt")
public static int getSimCount() {
int count = 1;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
@@ -293,6 +294,7 @@ public class PhoneUtils {
*
* @return 0, 1, 2
*/
+ @SuppressLint("ObsoleteSdkInt")
public static int getSimUsedCount() {
int count = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
@@ -325,6 +327,7 @@ public class PhoneUtils {
*
* @return 多Sim卡的具体信息
*/
+ @SuppressLint("ObsoleteSdkInt")
public static List getSimMultiInfo() {
List infos = new ArrayList<>();
Log.d(TAG, "Build.VERSION.SDK_INT = " + Build.VERSION.SDK_INT);
@@ -526,6 +529,7 @@ public class PhoneUtils {
}
// 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示)
+ @SuppressLint("InlinedApi")
public static void CheckPermission(PackageManager pm, Context that) {
//PackageManager pm = getPackageManager();
boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", that.getPackageName()));
@@ -538,11 +542,14 @@ public class PhoneUtils {
boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_SMS", that.getPackageName()));
boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", that.getPackageName()));
boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", that.getPackageName()));
+ boolean permission_read_call_log = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CALL_LOG", that.getPackageName()));
+ boolean permission_read_contacts = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CONTACTS", that.getPackageName()));
boolean permission_battery_stats = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BATTERY_STATS", that.getPackageName()));
if (!(permission_internet && permission_receive_boot && permission_foreground_service &&
permission_read_external_storage && permission_write_external_storage &&
permission_receive_sms && permission_read_sms && permission_send_sms &&
+ permission_read_call_log && permission_read_contacts &&
permission_read_phone_state && permission_read_phone_numbers && permission_battery_stats)) {
ActivityCompat.requestPermissions((Activity) that, new String[]{
Manifest.permission.INTERNET,
@@ -553,6 +560,8 @@ public class PhoneUtils {
Manifest.permission.READ_SMS,
Manifest.permission.SEND_SMS,
Manifest.permission.READ_PHONE_STATE,
+ Manifest.permission.READ_CALL_LOG,
+ Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_PHONE_NUMBERS,
Manifest.permission.FOREGROUND_SERVICE,
Manifest.permission.BATTERY_STATS,
diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
index d09376d3..c6da6b8f 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SettingUtil.java
@@ -122,14 +122,14 @@ public class SettingUtil {
.apply();
}
- public static String getBatteryLevelAlarm() {
- return sp_setting.getString(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, "");
+ public static int getBatteryLevelAlarm() {
+ return sp_setting.getInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, 0);
}
- public static void setBatteryLevelAlarm(String battery_level) {
+ public static void setBatteryLevelAlarm(int battery_level) {
Log.d(TAG, "battery_level :" + battery_level);
sp_setting.edit()
- .putString(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, battery_level)
+ .putInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, battery_level)
.apply();
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index dec04aba..bfe40042 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
-