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"> -