来电转接 & 重新梳理代码
This commit is contained in:
parent
c2d2beb8ef
commit
ae6a9de101
|
@ -15,3 +15,4 @@ gradle.properties
|
|||
/app/release/*
|
||||
/app/build/*
|
||||
/psd
|
||||
/keystore/keystore.properties
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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"
|
||||
}
|
|
@ -17,6 +17,7 @@
|
|||
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||
<uses-permission android:name="android.permission.READ_SMS" />
|
||||
<uses-permission android:name="android.permission.SEND_SMS" />
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
|
||||
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
||||
|
|
|
@ -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<LogVo> logVos = new ArrayList<>();
|
||||
private LogAdapter adapter;
|
||||
private ReFlashListView listView;
|
||||
private RefreshListView listView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
|
@ -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);
|
|
@ -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
|
||||
|
|
|
@ -8,6 +8,9 @@ import lombok.Data;
|
|||
public class BarkSettingVo implements Serializable {
|
||||
private String server;
|
||||
|
||||
public BarkSettingVo() {
|
||||
}
|
||||
|
||||
public BarkSettingVo(String server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -8,6 +8,9 @@ import lombok.Data;
|
|||
public class QYWXGroupRobotSettingVo implements Serializable {
|
||||
private String webHook;
|
||||
|
||||
public QYWXGroupRobotSettingVo() {
|
||||
}
|
||||
|
||||
public QYWXGroupRobotSettingVo(String webHook) {
|
||||
this.webHook = webHook;
|
||||
}
|
||||
|
|
|
@ -8,6 +8,9 @@ import lombok.Data;
|
|||
public class ServerChanSettingVo implements Serializable {
|
||||
private String sendKey;
|
||||
|
||||
public ServerChanSettingVo() {
|
||||
}
|
||||
|
||||
public ServerChanSettingVo(String sendKey) {
|
||||
this.sendKey = sendKey;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 + "%,已经到达低电量预警阈值,请及时充电!";
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
@ -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<SimInfo> getSimMultiInfo() {
|
||||
List<SimInfo> 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,
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.idormy.sms.forwarder.ReFlashListView
|
||||
<com.idormy.sms.forwarder.RefreshListView
|
||||
android:id="@+id/list_view_log"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
ext {
|
||||
appVersionCode = 26
|
||||
appVersionName = "2.0.0"
|
||||
}
|
Loading…
Reference in New Issue