diff --git a/app/build.gradle b/app/build.gradle index af5a62ce..71dc9329 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -129,9 +129,9 @@ 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数据请一定集成,可选 +// 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数据请一定集成,可选 //XUpdate implementation 'com.github.xuexiangjys:XUpdate:2.1.0' @@ -151,4 +151,8 @@ dependencies { //AndroidAsync implementation 'com.koushikdutta.async:androidasync:3.1.0' + + //Bind Android views and callbacks to fields and methods. + //implementation 'com.jakewharton:butterknife-gradle-plugin:10.2.3' + //annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' } 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 1a841b36..007da25a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -15,6 +15,8 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.widget.RadioButton; +import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; @@ -55,6 +57,7 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R private RefreshListView listView; private Intent serviceIntent; private static final int REQUEST_CODE = 9999; + private String currentType = "sms"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -98,6 +101,17 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R initTLogs(); //初始化数据 showList(logVos); + //切换日志类别 + int typeCheckId = getTypeCheckId(currentType); + final RadioGroup radioGroupTypeCheck = findViewById(R.id.radioGroupTypeCheck); + radioGroupTypeCheck.check(typeCheckId); + radioGroupTypeCheck.setOnCheckedChangeListener((group, checkedId) -> { + RadioButton rb = findViewById(checkedId); + currentType = (String) rb.getTag(); + initTLogs(); + showList(logVos); + }); + // 为ListView注册一个监听器,当用户点击了ListView中的任何一个子项时,就会回调onItemClick()方法 // 在这个方法中可以通过position参数判断出用户点击的是那一个子项 listView.setOnItemClickListener((parent, view, position, id) -> { @@ -134,6 +148,17 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R }); } + private int getTypeCheckId(String currentType) { + switch (currentType) { + case "call": + return R.id.btnTypeCall; + case "app": + return R.id.btnTypeApp; + default: + return R.id.btnTypeSms; + } + } + @SuppressLint("ObsoleteSdkInt") @Override protected void onResume() { @@ -237,7 +262,7 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R // 初始化数据 private void initTLogs() { - logVos = LogUtil.getLog(null, null); + logVos = LogUtil.getLog(null, null, currentType); } private void showList(List logVosN) { @@ -247,7 +272,6 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R listView = findViewById(R.id.list_view_log); listView.setInterface(this); adapter = new LogAdapter(MainActivity.this, R.layout.item_log, logVosN); - listView.setAdapter(adapter); } else { adapter.onDateChange(logVosN); @@ -390,6 +414,7 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R @Override public void onReceiveMessage(StatusBarNotification sbn) { if (sbn.getNotification() == null) return; + if (sbn.getNotification().extras == null) return; //推送通知的应用包名 String packageName = sbn.getPackageName(); @@ -414,7 +439,7 @@ public class MainActivity extends AppCompatActivity implements NotifyListener, R SmsVo smsVo = new SmsVo(packageName, text, new Date(), title); Log.d(TAG, "send_msg" + smsVo.toString()); - SendUtil.send_msg(this, smsVo, 1); + SendUtil.send_msg(this, smsVo, 1, "app"); } /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java b/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java index 72b05bee..4727904e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MyApplication.java @@ -16,8 +16,6 @@ import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.PhoneUtils; import com.idormy.sms.forwarder.utils.SettingUtil; import com.smailnet.emailkit.EmailKit; -import com.umeng.analytics.MobclickAgent; -import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; @@ -77,11 +75,11 @@ public class MyApplication extends Application { super.onCreate(); //初始化组件化基础库, 所有友盟业务SDK都必须调用此初始化接口。 //建议在宿主App的Application.onCreate函数中调用基础组件库初始化函数。 - UMConfigure.init(this, "60254fc7425ec25f10f4293e", getChannelName(this), UMConfigure.DEVICE_TYPE_PHONE, ""); + //UMConfigure.init(this, "60254fc7425ec25f10f4293e", getChannelName(this), UMConfigure.DEVICE_TYPE_PHONE, ""); // 选用LEGACY_AUTO页面采集模式 - MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.LEGACY_MANUAL); + //MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.LEGACY_MANUAL); //pro close log - UMConfigure.setLogEnabled(true); + //UMConfigure.setLogEnabled(true); Intent intent = new Intent(this, FrontService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java index 43b5b19b..2324b1ce 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java @@ -12,6 +12,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Switch; import android.widget.TextView; @@ -28,7 +29,6 @@ import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.SettingUtil; -import com.umeng.analytics.MobclickAgent; import java.util.ArrayList; import java.util.Date; @@ -41,6 +41,7 @@ public class RuleActivity extends AppCompatActivity { // 用于存储数据 private List ruleModels = new ArrayList<>(); private RuleAdapter adapter; + private String currentType = "sms"; //消息处理者,创建一个Handler的子类对象,目的是重写Handler的处理消息的方法(handleMessage()) @SuppressLint("HandlerLeak") @@ -108,11 +109,34 @@ public class RuleActivity extends AppCompatActivity { builder.create().show(); return true; }); + + //切换日志类别 + int typeCheckId = getTypeCheckId(currentType); + final RadioGroup radioGroupTypeCheck = findViewById(R.id.radioGroupTypeCheck); + radioGroupTypeCheck.check(typeCheckId); + radioGroupTypeCheck.setOnCheckedChangeListener((group, checkedId) -> { + RadioButton rb = findViewById(checkedId); + currentType = (String) rb.getTag(); + initRules(); //初始化数据 + adapter = new RuleAdapter(RuleActivity.this, R.layout.item_rule, ruleModels); + listView.setAdapter(adapter); + }); + } + + private int getTypeCheckId(String currentType) { + switch (currentType) { + case "call": + return R.id.btnTypeCall; + case "app": + return R.id.btnTypeApp; + default: + return R.id.btnTypeSms; + } } // 初始化数据 private void initRules() { - ruleModels = RuleUtil.getRule(null, null); + ruleModels = RuleUtil.getRule(null, null, currentType); } public void addRule(View view) { @@ -189,6 +213,7 @@ public class RuleActivity extends AppCompatActivity { Log.d(TAG, radioGroupRuleCheck.getCheckedRadioButtonId() + " " + radioGroupRuleCheck2.getCheckedRadioButtonId() + " " + radioGroupRuleCheckId); if (ruleModel == null) { RuleModel newRuleModel = new RuleModel(); + newRuleModel.setType(currentType); newRuleModel.setFiled(RuleModel.getRuleFiledFromCheckId(radioGroupRuleFiled.getCheckedRadioButtonId())); newRuleModel.setCheck(RuleModel.getRuleCheckFromCheckId(radioGroupRuleCheckId)); newRuleModel.setSimSlot(RuleModel.getRuleSimSlotFromCheckId(radioGroupSimSlot.getCheckedRadioButtonId())); @@ -449,13 +474,13 @@ public class RuleActivity extends AppCompatActivity { @Override protected void onResume() { super.onResume(); - MobclickAgent.onResume(this); + //MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); - MobclickAgent.onPause(this); + //MobclickAgent.onPause(this); } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java index a83be07e..62c679ed 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -1,1201 +1,1200 @@ -package com.idormy.sms.forwarder; - -import static com.idormy.sms.forwarder.model.SenderModel.STATUS_ON; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_BARK; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_DINGDING; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_EMAIL; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_FEISHU; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_QYWX_APP; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_QYWX_GROUP_ROBOT; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_SERVER_CHAN; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_SMS; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_TELEGRAM; -import static com.idormy.sms.forwarder.model.SenderModel.TYPE_WEB_NOTIFY; - -import android.annotation.SuppressLint; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.ListView; -import android.widget.RadioGroup; -import android.widget.Switch; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; - -import com.alibaba.fastjson.JSON; -import com.idormy.sms.forwarder.adapter.SenderAdapter; -import com.idormy.sms.forwarder.model.SenderModel; -import com.idormy.sms.forwarder.model.vo.BarkSettingVo; -import com.idormy.sms.forwarder.model.vo.DingDingSettingVo; -import com.idormy.sms.forwarder.model.vo.EmailSettingVo; -import com.idormy.sms.forwarder.model.vo.FeiShuSettingVo; -import com.idormy.sms.forwarder.model.vo.QYWXAppSettingVo; -import com.idormy.sms.forwarder.model.vo.QYWXGroupRobotSettingVo; -import com.idormy.sms.forwarder.model.vo.ServerChanSettingVo; -import com.idormy.sms.forwarder.model.vo.SmsSettingVo; -import com.idormy.sms.forwarder.model.vo.TelegramSettingVo; -import com.idormy.sms.forwarder.model.vo.WebNotifySettingVo; -import com.idormy.sms.forwarder.sender.SenderBarkMsg; -import com.idormy.sms.forwarder.sender.SenderDingdingMsg; -import com.idormy.sms.forwarder.sender.SenderFeishuMsg; -import com.idormy.sms.forwarder.sender.SenderMailMsg; -import com.idormy.sms.forwarder.sender.SenderQyWxAppMsg; -import com.idormy.sms.forwarder.sender.SenderQyWxGroupRobotMsg; -import com.idormy.sms.forwarder.sender.SenderServerChanMsg; -import com.idormy.sms.forwarder.sender.SenderSmsMsg; -import com.idormy.sms.forwarder.sender.SenderTelegramMsg; -import com.idormy.sms.forwarder.sender.SenderUtil; -import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg; -import com.umeng.analytics.MobclickAgent; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -@SuppressWarnings("deprecation") -public class SenderActivity extends AppCompatActivity { - - public static final int NOTIFY = 0x9731993; - private final String TAG = "SenderActivity"; - // 用于存储数据 - private List senderModels = new ArrayList<>(); - private SenderAdapter adapter; - //消息处理者,创建一个Handler的子类对象,目的是重写Handler的处理消息的方法(handleMessage()) - @SuppressLint("HandlerLeak") - private final Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (msg.what == NOTIFY) { - Toast.makeText(SenderActivity.this, msg.getData().getString("DATA"), Toast.LENGTH_LONG).show(); - } - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - Log.d(TAG, "onCreate"); - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_sender); - SenderUtil.init(SenderActivity.this); - } - - @Override - protected void onStart() { - super.onStart(); - Log.d(TAG, "onStart"); - - //是否关闭页面提示 - TextView help_tip = findViewById(R.id.help_tip); - help_tip.setVisibility(MyApplication.showHelpTip ? View.VISIBLE : View.GONE); - - // 先拿到数据并放在适配器上 - initSenders(); //初始化数据 - adapter = new SenderAdapter(SenderActivity.this, R.layout.item_sender, senderModels); - - // 将适配器上的数据传递给listView - ListView listView = findViewById(R.id.list_view_sender); - listView.setAdapter(adapter); - - // 为ListView注册一个监听器,当用户点击了ListView中的任何一个子项时,就会回调onItemClick()方法 - // 在这个方法中可以通过position参数判断出用户点击的是那一个子项 - listView.setOnItemClickListener((parent, view, position, id) -> { - SenderModel senderModel = senderModels.get(position); - Log.d(TAG, "onItemClick: " + senderModel); - - switch (senderModel.getType()) { - case TYPE_DINGDING: - setDingDing(senderModel); - break; - case TYPE_EMAIL: - setEmail(senderModel); - break; - case TYPE_BARK: - setBark(senderModel); - break; - case TYPE_WEB_NOTIFY: - setWebNotify(senderModel); - break; - case TYPE_QYWX_GROUP_ROBOT: - setQYWXGroupRobot(senderModel); - break; - case TYPE_QYWX_APP: - setQYWXApp(senderModel); - break; - case TYPE_SERVER_CHAN: - setServerChan(senderModel); - break; - case TYPE_TELEGRAM: - setTelegram(senderModel); - break; - case TYPE_SMS: - setSms(senderModel); - break; - case TYPE_FEISHU: - setFeiShu(senderModel); - break; - default: - Toast.makeText(SenderActivity.this, R.string.invalid_sender, Toast.LENGTH_LONG).show(); - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - break; - } - - }); - - listView.setOnItemLongClickListener((parent, view, position, id) -> { - //定义AlertDialog.Builder对象,当长按列表项的时候弹出确认删除对话框 - AlertDialog.Builder builder = new AlertDialog.Builder(SenderActivity.this); - builder.setTitle(R.string.delete_sender_title); - builder.setMessage(R.string.delete_sender_tips); - - //添加AlertDialog.Builder对象的setPositiveButton()方法 - builder.setPositiveButton(R.string.confirm, (dialog, which) -> { - SenderUtil.delSender(senderModels.get(position).getId()); - initSenders(); - adapter.del(senderModels); - Toast.makeText(getBaseContext(), R.string.delete_sender_toast, Toast.LENGTH_SHORT).show(); - }); - - //添加AlertDialog.Builder对象的setNegativeButton()方法 - builder.setNegativeButton(R.string.cancel, (dialog, which) -> { - - }); - - builder.create().show(); - return true; - }); - } - - // 初始化数据 - private void initSenders() { - senderModels = SenderUtil.getSender(null, null); - } - - public void addSender(View view) { - AlertDialog.Builder builder = new AlertDialog.Builder(SenderActivity.this); - builder.setTitle(R.string.add_sender_title); - //添加列表 - builder.setItems(R.array.add_sender_menu, (dialogInterface, which) -> { - switch (which) { - case TYPE_DINGDING: - setDingDing(null); - break; - case TYPE_EMAIL: - setEmail(null); - break; - case TYPE_BARK: - setBark(null); - break; - case TYPE_WEB_NOTIFY: - setWebNotify(null); - break; - case TYPE_QYWX_GROUP_ROBOT: - setQYWXGroupRobot(null); - break; - case TYPE_QYWX_APP: - setQYWXApp(null); - break; - case TYPE_SERVER_CHAN: - setServerChan(null); - break; - case TYPE_TELEGRAM: - setTelegram(null); - break; - case TYPE_SMS: - setSms(null); - break; - case TYPE_FEISHU: - setFeiShu(null); - break; - default: - Toast.makeText(SenderActivity.this, R.string.not_supported, Toast.LENGTH_LONG).show(); - break; - } - }); - builder.show(); - Log.d(TAG, "setDingDing show" + senderModels.size()); - } - - //钉钉机器人 - @SuppressLint("SimpleDateFormat") - private void setDingDing(final SenderModel senderModel) { - DingDingSettingVo dingDingSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - dingDingSettingVo = JSON.parseObject(jsonSettingStr, DingDingSettingVo.class); - } - } - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_dingding, null); - - final EditText editTextDingdingName = view1.findViewById(R.id.editTextDingdingName); - if (senderModel != null) - editTextDingdingName.setText(senderModel.getName()); - final EditText editTextDingdingToken = view1.findViewById(R.id.editTextDingdingToken); - if (dingDingSettingVo != null) - editTextDingdingToken.setText(dingDingSettingVo.getToken()); - final EditText editTextDingdingSecret = view1.findViewById(R.id.editTextDingdingSecret); - if (dingDingSettingVo != null) - editTextDingdingSecret.setText(dingDingSettingVo.getSecret()); - final EditText editTextDingdingAtMobiles = view1.findViewById(R.id.editTextDingdingAtMobiles); - if (dingDingSettingVo != null && dingDingSettingVo.getAtMobiles() != null) - editTextDingdingAtMobiles.setText(dingDingSettingVo.getAtMobiles()); - @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchDingdingAtAll = view1.findViewById(R.id.switchDingdingAtAll); - if (dingDingSettingVo != null && dingDingSettingVo.getAtAll() != null) - switchDingdingAtAll.setChecked(dingDingSettingVo.getAtAll()); - - Button buttonDingdingOk = view1.findViewById(R.id.buttonDingdingOk); - Button buttonDingdingDel = view1.findViewById(R.id.buttonDingdingDel); - Button buttonDingdingTest = view1.findViewById(R.id.buttonDingdingTest); - alertDialog71 - .setTitle(R.string.setdingdingtitle) - .setIcon(R.mipmap.dingding) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - buttonDingdingOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextDingdingName.getText().toString()); - newSenderModel.setType(TYPE_DINGDING); - newSenderModel.setStatus(STATUS_ON); - DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( - editTextDingdingToken.getText().toString(), - editTextDingdingSecret.getText().toString(), - editTextDingdingAtMobiles.getText().toString(), - switchDingdingAtAll.isChecked()); - newSenderModel.setJsonSetting(JSON.toJSONString(dingDingSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextDingdingName.getText().toString()); - senderModel.setType(TYPE_DINGDING); - senderModel.setStatus(STATUS_ON); - DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( - editTextDingdingToken.getText().toString(), - editTextDingdingSecret.getText().toString(), - editTextDingdingAtMobiles.getText().toString(), - switchDingdingAtAll.isChecked()); - senderModel.setJsonSetting(JSON.toJSONString(dingDingSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - - show.dismiss(); - - - }); - buttonDingdingDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonDingdingTest.setOnClickListener(view -> { - String token = editTextDingdingToken.getText().toString(); - String secret = editTextDingdingSecret.getText().toString(); - String atMobiles = editTextDingdingAtMobiles.getText().toString(); - Boolean atAll = switchDingdingAtAll.isChecked(); - if (!token.isEmpty()) { - try { - SenderDingdingMsg.sendMsg(0, handler, token, secret, atMobiles, atAll, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_token, Toast.LENGTH_LONG).show(); - } - }); - } - - //邮箱 - @SuppressLint("SimpleDateFormat") - private void setEmail(final SenderModel senderModel) { - EmailSettingVo emailSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - emailSettingVo = JSON.parseObject(jsonSettingStr, EmailSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_email, null); - - final EditText editTextEmailName = view1.findViewById(R.id.editTextEmailName); - if (senderModel != null) editTextEmailName.setText(senderModel.getName()); - final EditText editTextEmailHost = view1.findViewById(R.id.editTextEmailHost); - if (emailSettingVo != null) editTextEmailHost.setText(emailSettingVo.getHost()); - final EditText editTextEmailPort = view1.findViewById(R.id.editTextEmailPort); - if (emailSettingVo != null) editTextEmailPort.setText(emailSettingVo.getPort()); - - @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchEmailSSl = view1.findViewById(R.id.switchEmailSSl); - if (emailSettingVo != null) switchEmailSSl.setChecked(emailSettingVo.getSsl()); - final EditText editTextEmailFromAdd = view1.findViewById(R.id.editTextEmailFromAdd); - if (emailSettingVo != null) editTextEmailFromAdd.setText(emailSettingVo.getFromEmail()); - final EditText editTextEmailNickname = view1.findViewById(R.id.editTextEmailNickname); - if (emailSettingVo != null) editTextEmailNickname.setText(emailSettingVo.getNickname()); - final EditText editTextEmailPsw = view1.findViewById(R.id.editTextEmailPsw); - if (emailSettingVo != null) editTextEmailPsw.setText(emailSettingVo.getPwd()); - final EditText editTextEmailToAdd = view1.findViewById(R.id.editTextEmailToAdd); - if (emailSettingVo != null) editTextEmailToAdd.setText(emailSettingVo.getToEmail()); - - Button buttonEmailOk = view1.findViewById(R.id.buttonEmailOk); - Button buttonEmailDel = view1.findViewById(R.id.buttonEmailDel); - Button buttonEmailTest = view1.findViewById(R.id.buttonEmailTest); - alertDialog71 - .setTitle(R.string.setemailtitle) - .setIcon(R.mipmap.email) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonEmailOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextEmailName.getText().toString()); - newSenderModel.setType(TYPE_EMAIL); - newSenderModel.setStatus(STATUS_ON); - EmailSettingVo emailSettingVoNew = new EmailSettingVo( - editTextEmailHost.getText().toString(), - editTextEmailPort.getText().toString(), - switchEmailSSl.isChecked(), - editTextEmailFromAdd.getText().toString(), - editTextEmailNickname.getText().toString(), - editTextEmailPsw.getText().toString(), - editTextEmailToAdd.getText().toString() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextEmailName.getText().toString()); - senderModel.setType(TYPE_EMAIL); - senderModel.setStatus(STATUS_ON); - EmailSettingVo emailSettingVoNew = new EmailSettingVo( - editTextEmailHost.getText().toString(), - editTextEmailPort.getText().toString(), - switchEmailSSl.isChecked(), - editTextEmailFromAdd.getText().toString(), - editTextEmailNickname.getText().toString(), - editTextEmailPsw.getText().toString(), - editTextEmailToAdd.getText().toString() - ); - senderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - - }); - buttonEmailDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonEmailTest.setOnClickListener(view -> { - String host = editTextEmailHost.getText().toString(); - String port = editTextEmailPort.getText().toString(); - boolean ssl = switchEmailSSl.isChecked(); - String fromEmail = editTextEmailFromAdd.getText().toString(); - String pwd = editTextEmailPsw.getText().toString(); - String toEmail = editTextEmailToAdd.getText().toString(); - - String nickname = editTextEmailNickname.getText().toString(); - if (nickname.equals("")) { - nickname = "SmsForwarder"; - } - - if (!host.isEmpty() && !port.isEmpty() && !fromEmail.isEmpty() && !pwd.isEmpty() && !toEmail.isEmpty()) { - try { - SenderMailMsg.sendEmail(0, handler, host, port, ssl, fromEmail, nickname, pwd, toEmail, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_email, Toast.LENGTH_LONG).show(); - } - }); - } - - //Bark - private void setBark(final SenderModel senderModel) { - BarkSettingVo barkSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - barkSettingVo = JSON.parseObject(jsonSettingStr, BarkSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_bark, null); - - final EditText editTextBarkName = view1.findViewById(R.id.editTextBarkName); - if (senderModel != null) editTextBarkName.setText(senderModel.getName()); - final EditText editTextBarkServer = view1.findViewById(R.id.editTextBarkServer); - if (barkSettingVo != null) editTextBarkServer.setText(barkSettingVo.getServer()); - final EditText editTextBarkIcon = view1.findViewById(R.id.editTextBarkIcon); - if (barkSettingVo != null) editTextBarkIcon.setText(barkSettingVo.getIcon()); - - Button buttonBarkOk = view1.findViewById(R.id.buttonBarkOk); - Button buttonBarkDel = view1.findViewById(R.id.buttonBarkDel); - Button buttonBarkTest = view1.findViewById(R.id.buttonBarkTest); - alertDialog71 - .setTitle(R.string.setbarktitle) - .setIcon(R.mipmap.bark) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonBarkOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextBarkName.getText().toString()); - newSenderModel.setType(TYPE_BARK); - newSenderModel.setStatus(STATUS_ON); - BarkSettingVo barkSettingVoNew = new BarkSettingVo( - editTextBarkServer.getText().toString(), - editTextBarkIcon.getText().toString() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(barkSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextBarkName.getText().toString()); - senderModel.setType(TYPE_BARK); - senderModel.setStatus(STATUS_ON); - BarkSettingVo barkSettingVoNew = new BarkSettingVo( - editTextBarkServer.getText().toString(), - editTextBarkIcon.getText().toString() - ); - senderModel.setJsonSetting(JSON.toJSONString(barkSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - }); - buttonBarkDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonBarkTest.setOnClickListener(view -> { - String barkServer = editTextBarkServer.getText().toString(); - String barkIcon = editTextBarkIcon.getText().toString(); - if (!barkServer.isEmpty()) { - try { - SenderBarkMsg.sendMsg(0, handler, barkServer, barkIcon, getString(R.string.test_phone_num), getString(R.string.test_sms), getString(R.string.test_group_name)); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_bark_server, Toast.LENGTH_LONG).show(); - } - }); - } - - //Server酱·Turbo版 - private void setServerChan(final SenderModel senderModel) { - ServerChanSettingVo serverchanSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - serverchanSettingVo = JSON.parseObject(jsonSettingStr, ServerChanSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_serverchan, null); - - final EditText editTextServerChanName = view1.findViewById(R.id.editTextServerChanName); - if (senderModel != null) editTextServerChanName.setText(senderModel.getName()); - final EditText editTextServerChanSendKey = view1.findViewById(R.id.editTextServerChanSendKey); - if (serverchanSettingVo != null) - editTextServerChanSendKey.setText(serverchanSettingVo.getSendKey()); - - Button buttonServerChanOk = view1.findViewById(R.id.buttonServerChanOk); - Button buttonServerChanDel = view1.findViewById(R.id.buttonServerChanDel); - Button buttonServerChanTest = view1.findViewById(R.id.buttonServerChanTest); - alertDialog71 - .setTitle(R.string.setserverchantitle) - .setIcon(R.mipmap.serverchan) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonServerChanOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextServerChanName.getText().toString()); - newSenderModel.setType(TYPE_SERVER_CHAN); - newSenderModel.setStatus(STATUS_ON); - ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( - editTextServerChanSendKey.getText().toString() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(serverChanSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextServerChanName.getText().toString()); - senderModel.setType(TYPE_SERVER_CHAN); - senderModel.setStatus(STATUS_ON); - ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( - editTextServerChanSendKey.getText().toString() - ); - senderModel.setJsonSetting(JSON.toJSONString(serverChanSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - }); - buttonServerChanDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonServerChanTest.setOnClickListener(view -> { - String serverChanServer = editTextServerChanSendKey.getText().toString(); - if (!serverChanServer.isEmpty()) { - try { - SenderServerChanMsg.sendMsg(0, handler, serverChanServer, getString(R.string.test_phone_num), getString(R.string.test_sms)); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_sendkey, Toast.LENGTH_LONG).show(); - } - }); - } - - //webhook - @SuppressLint("SimpleDateFormat") - private void setWebNotify(final SenderModel senderModel) { - WebNotifySettingVo webNotifySettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - webNotifySettingVo = JSON.parseObject(jsonSettingStr, WebNotifySettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_webnotify, null); - - final EditText editTextWebNotifyName = view1.findViewById(R.id.editTextWebNotifyName); - if (senderModel != null) editTextWebNotifyName.setText(senderModel.getName()); - final EditText editTextWebNotifyWebServer = view1.findViewById(R.id.editTextWebNotifyWebServer); - if (webNotifySettingVo != null) editTextWebNotifyWebServer.setText(webNotifySettingVo.getWebServer()); - final EditText editTextWebNotifyWebParams = view1.findViewById(R.id.editTextWebNotifyWebParams); - if (webNotifySettingVo != null) editTextWebNotifyWebParams.setText(webNotifySettingVo.getWebParams()); - final EditText editTextWebNotifySecret = view1.findViewById(R.id.editTextWebNotifySecret); - if (webNotifySettingVo != null) editTextWebNotifySecret.setText(webNotifySettingVo.getSecret()); - final RadioGroup radioGroupWebNotifyMethod = view1.findViewById(R.id.radioGroupWebNotifyMethod); - if (webNotifySettingVo != null) radioGroupWebNotifyMethod.check(webNotifySettingVo.getWebNotifyMethodCheckId()); - - Button buttonWebNotifyOk = view1.findViewById(R.id.buttonWebNotifyOk); - Button buttonWebNotifyDel = view1.findViewById(R.id.buttonWebNotifyDel); - Button buttonWebNotifyTest = view1.findViewById(R.id.buttonWebNotifyTest); - alertDialog71 - .setTitle(R.string.setwebnotifytitle) - .setIcon(R.mipmap.webhook) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonWebNotifyOk.setOnClickListener(view -> { - WebNotifySettingVo webNotifySettingVoNew = new WebNotifySettingVo( - editTextWebNotifyWebServer.getText().toString(), - editTextWebNotifySecret.getText().toString(), - (radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"), - editTextWebNotifyWebParams.getText().toString() - ); - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextWebNotifyName.getText().toString()); - newSenderModel.setType(TYPE_WEB_NOTIFY); - newSenderModel.setStatus(STATUS_ON); - newSenderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); - SenderUtil.addSender(newSenderModel); - } else { - senderModel.setName(editTextWebNotifyName.getText().toString()); - senderModel.setType(TYPE_WEB_NOTIFY); - senderModel.setStatus(STATUS_ON); - senderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); - SenderUtil.updateSender(senderModel); - } - initSenders(); - adapter.update(senderModels); - show.dismiss(); - }); - buttonWebNotifyDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonWebNotifyTest.setOnClickListener(view -> { - String webServer = editTextWebNotifyWebServer.getText().toString(); - String webParams = editTextWebNotifyWebParams.getText().toString(); - String secret = editTextWebNotifySecret.getText().toString(); - String method = radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"; - if (!webServer.isEmpty()) { - try { - SenderWebNotifyMsg.sendMsg(0, handler, webServer, webParams, secret, method, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_webserver, Toast.LENGTH_LONG).show(); - } - }); - } - - //企业微信群机器人 - @SuppressLint("SimpleDateFormat") - private void setQYWXGroupRobot(final SenderModel senderModel) { - QYWXGroupRobotSettingVo qywxGroupRobotSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - qywxGroupRobotSettingVo = JSON.parseObject(jsonSettingStr, QYWXGroupRobotSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxgrouprobot, null); - - final EditText editTextQYWXGroupRobotName = view1.findViewById(R.id.editTextQYWXGroupRobotName); - if (senderModel != null) editTextQYWXGroupRobotName.setText(senderModel.getName()); - final EditText editTextQYWXGroupRobotWebHook = view1.findViewById(R.id.editTextQYWXGroupRobotWebHook); - if (qywxGroupRobotSettingVo != null) - editTextQYWXGroupRobotWebHook.setText(qywxGroupRobotSettingVo.getWebHook()); - - Button buttonQyWxGroupRobotOk = view1.findViewById(R.id.buttonQyWxGroupRobotOk); - Button buttonQyWxGroupRobotDel = view1.findViewById(R.id.buttonQyWxGroupRobotDel); - Button buttonQyWxGroupRobotTest = view1.findViewById(R.id.buttonQyWxGroupRobotTest); - alertDialog71 - .setTitle(R.string.setqywxgrouprobottitle) - .setIcon(R.mipmap.qywx) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonQyWxGroupRobotOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextQYWXGroupRobotName.getText().toString()); - newSenderModel.setType(TYPE_QYWX_GROUP_ROBOT); - newSenderModel.setStatus(STATUS_ON); - QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( - editTextQYWXGroupRobotWebHook.getText().toString() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(qywxGroupRobotSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextQYWXGroupRobotName.getText().toString()); - senderModel.setType(TYPE_QYWX_GROUP_ROBOT); - senderModel.setStatus(STATUS_ON); - QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( - editTextQYWXGroupRobotWebHook.getText().toString() - ); - senderModel.setJsonSetting(JSON.toJSONString(qywxGroupRobotSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - }); - buttonQyWxGroupRobotDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonQyWxGroupRobotTest.setOnClickListener(view -> { - String webHook = editTextQYWXGroupRobotWebHook.getText().toString(); - if (!webHook.isEmpty()) { - try { - SenderQyWxGroupRobotMsg.sendMsg(0, handler, webHook, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_webhook, Toast.LENGTH_LONG).show(); - } - }); - } - - //企业微信应用 - @SuppressLint({"SimpleDateFormat", "SetTextI18n"}) - private void setQYWXApp(final SenderModel senderModel) { - QYWXAppSettingVo QYWXAppSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - QYWXAppSettingVo = JSON.parseObject(jsonSettingStr, QYWXAppSettingVo.class); - } - } - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxapp, null); - - final EditText editTextQYWXAppName = view1.findViewById(R.id.editTextQYWXAppName); - if (senderModel != null) - editTextQYWXAppName.setText(senderModel.getName()); - final EditText editTextQYWXAppCorpID = view1.findViewById(R.id.editTextQYWXAppCorpID); - final EditText editTextQYWXAppAgentID = view1.findViewById(R.id.editTextQYWXAppAgentID); - final EditText editTextQYWXAppSecret = view1.findViewById(R.id.editTextQYWXAppSecret); - final LinearLayout linearLayoutQYWXAppToUser = view1.findViewById(R.id.linearLayoutQYWXAppToUser); - final EditText editTextQYWXAppToUser = view1.findViewById(R.id.editTextQYWXAppToUser); - @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchQYWXAppAtAll = view1.findViewById(R.id.switchQYWXAppAtAll); - if (QYWXAppSettingVo != null) { - editTextQYWXAppCorpID.setText(QYWXAppSettingVo.getCorpID()); - editTextQYWXAppAgentID.setText(QYWXAppSettingVo.getAgentID()); - editTextQYWXAppSecret.setText(QYWXAppSettingVo.getSecret()); - editTextQYWXAppToUser.setText(QYWXAppSettingVo.getToUser()); - switchQYWXAppAtAll.setChecked(QYWXAppSettingVo.getAtAll()); - linearLayoutQYWXAppToUser.setVisibility(QYWXAppSettingVo.getAtAll() ? View.GONE : View.VISIBLE); - } - switchQYWXAppAtAll.setOnCheckedChangeListener((buttonView, isChecked) -> { - if (isChecked) { - linearLayoutQYWXAppToUser.setVisibility(View.GONE); - editTextQYWXAppToUser.setText("@all"); - } else { - linearLayoutQYWXAppToUser.setVisibility(View.VISIBLE); - editTextQYWXAppToUser.setText(""); - } - Log.d(TAG, "onCheckedChanged:" + isChecked); - }); - - Button buttonQYWXAppOk = view1.findViewById(R.id.buttonQYWXAppOk); - Button buttonQYWXAppDel = view1.findViewById(R.id.buttonQYWXAppDel); - Button buttonQYWXAppTest = view1.findViewById(R.id.buttonQYWXAppTest); - alertDialog71 - .setTitle(R.string.setqywxapptitle) - .setIcon(R.mipmap.qywxapp) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - buttonQYWXAppOk.setOnClickListener(view -> { - String toUser = editTextQYWXAppToUser.getText().toString(); - if (toUser.isEmpty()) { - Toast.makeText(SenderActivity.this, R.string.invalid_at_mobiles, Toast.LENGTH_LONG).show(); - editTextQYWXAppToUser.setFocusable(true); - editTextQYWXAppToUser.requestFocus(); - return; - } - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextQYWXAppName.getText().toString()); - newSenderModel.setType(TYPE_QYWX_APP); - newSenderModel.setStatus(STATUS_ON); - QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( - editTextQYWXAppCorpID.getText().toString(), - editTextQYWXAppAgentID.getText().toString(), - editTextQYWXAppSecret.getText().toString(), - editTextQYWXAppToUser.getText().toString(), - switchQYWXAppAtAll.isChecked()); - newSenderModel.setJsonSetting(JSON.toJSONString(QYWXAppSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextQYWXAppName.getText().toString()); - senderModel.setType(TYPE_QYWX_APP); - senderModel.setStatus(STATUS_ON); - QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( - editTextQYWXAppCorpID.getText().toString(), - editTextQYWXAppAgentID.getText().toString(), - editTextQYWXAppSecret.getText().toString(), - editTextQYWXAppToUser.getText().toString(), - switchQYWXAppAtAll.isChecked()); - senderModel.setJsonSetting(JSON.toJSONString(QYWXAppSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - }); - buttonQYWXAppDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonQYWXAppTest.setOnClickListener(view -> { - String cropID = editTextQYWXAppCorpID.getText().toString(); - String agentID = editTextQYWXAppAgentID.getText().toString(); - String secret = editTextQYWXAppSecret.getText().toString(); - String toUser = editTextQYWXAppToUser.getText().toString(); - //Boolean atAll = switchQYWXAppAtAll.isChecked(); - if (!toUser.isEmpty()) { - try { - SenderQyWxAppMsg.sendMsg(0, handler, cropID, agentID, secret, toUser, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())), true); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_at_mobiles, Toast.LENGTH_LONG).show(); - } - }); - } - - //Telegram机器人 - private void setTelegram(final SenderModel senderModel) { - TelegramSettingVo telegramSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - telegramSettingVo = JSON.parseObject(jsonSettingStr, TelegramSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_telegram, null); - - final EditText editTextTelegramName = view1.findViewById(R.id.editTextTelegramName); - if (senderModel != null) editTextTelegramName.setText(senderModel.getName()); - final EditText editTextTelegramApiToken = view1.findViewById(R.id.editTextTelegramApiToken); - if (telegramSettingVo != null) - editTextTelegramApiToken.setText(telegramSettingVo.getApiToken()); - final EditText editTextTelegramChatId = view1.findViewById(R.id.editTextTelegramChatId); - if (telegramSettingVo != null) - editTextTelegramChatId.setText(telegramSettingVo.getChatId()); - - Button buttonTelegramOk = view1.findViewById(R.id.buttonTelegramOk); - Button buttonTelegramDel = view1.findViewById(R.id.buttonTelegramDel); - Button buttonTelegramTest = view1.findViewById(R.id.buttonTelegramTest); - alertDialog71 - .setTitle(R.string.settelegramtitle) - .setIcon(R.mipmap.telegram) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonTelegramOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextTelegramName.getText().toString()); - newSenderModel.setType(TYPE_TELEGRAM); - newSenderModel.setStatus(STATUS_ON); - TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( - editTextTelegramApiToken.getText().toString(), - editTextTelegramChatId.getText().toString() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextTelegramName.getText().toString()); - senderModel.setType(TYPE_TELEGRAM); - senderModel.setStatus(STATUS_ON); - TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( - editTextTelegramApiToken.getText().toString(), - editTextTelegramChatId.getText().toString() - ); - senderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - }); - buttonTelegramDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonTelegramTest.setOnClickListener(view -> { - String apiToken = editTextTelegramApiToken.getText().toString(); - String chatId = editTextTelegramChatId.getText().toString(); - if (!apiToken.isEmpty() && !chatId.isEmpty()) { - try { - SenderTelegramMsg.sendMsg(0, handler, apiToken, chatId, getString(R.string.test_phone_num), getString(R.string.test_sms)); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_apiToken_or_chatId, Toast.LENGTH_LONG).show(); - } - }); - } - - //短信 - private void setSms(final SenderModel senderModel) { - SmsSettingVo smsSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - Log.d(TAG, "jsonSettingStr = " + jsonSettingStr); - if (jsonSettingStr != null) { - smsSettingVo = JSON.parseObject(jsonSettingStr, SmsSettingVo.class); - } - } - - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_sms, null); - - final EditText editTextSmsName = view1.findViewById(R.id.editTextSmsName); - if (senderModel != null) editTextSmsName.setText(senderModel.getName()); - final RadioGroup radioGroupSmsSimSlot = view1.findViewById(R.id.radioGroupSmsSimSlot); - if (smsSettingVo != null) radioGroupSmsSimSlot.check(smsSettingVo.getSmsSimSlotCheckId()); - final EditText editTextSmsMobiles = view1.findViewById(R.id.editTextSmsMobiles); - if (smsSettingVo != null) editTextSmsMobiles.setText(smsSettingVo.getMobiles()); - @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchSmsOnlyNoNetwork = view1.findViewById(R.id.switchSmsOnlyNoNetwork); - if (smsSettingVo != null) switchSmsOnlyNoNetwork.setChecked(smsSettingVo.getOnlyNoNetwork()); - - Button buttonSmsOk = view1.findViewById(R.id.buttonSmsOk); - Button buttonSmsDel = view1.findViewById(R.id.buttonSmsDel); - Button buttonSmsTest = view1.findViewById(R.id.buttonSmsTest); - alertDialog71 - .setTitle(R.string.setsmstitle) - .setIcon(R.mipmap.sms) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - - buttonSmsOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextSmsName.getText().toString()); - newSenderModel.setType(TYPE_SMS); - newSenderModel.setStatus(STATUS_ON); - SmsSettingVo smsSettingVoNew = new SmsSettingVo( - newSenderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), - editTextSmsMobiles.getText().toString(), - switchSmsOnlyNoNetwork.isChecked() - ); - newSenderModel.setJsonSetting(JSON.toJSONString(smsSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextSmsName.getText().toString()); - senderModel.setType(TYPE_SMS); - senderModel.setStatus(STATUS_ON); - SmsSettingVo smsSettingVoNew = new SmsSettingVo( - senderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), - editTextSmsMobiles.getText().toString(), - switchSmsOnlyNoNetwork.isChecked() - ); - senderModel.setJsonSetting(JSON.toJSONString(smsSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - - show.dismiss(); - - }); - buttonSmsDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - buttonSmsTest.setOnClickListener(view -> { - int simSlot = 0; - if (R.id.btnSmsSimSlot2 == radioGroupSmsSimSlot.getCheckedRadioButtonId()) { - simSlot = 1; - } - String mobiles = editTextSmsMobiles.getText().toString(); - Boolean onlyNoNetwork = switchSmsOnlyNoNetwork.isChecked(); - if (!mobiles.isEmpty()) { - try { - SenderSmsMsg.sendMsg(0, handler, simSlot, mobiles, onlyNoNetwork, getString(R.string.test_phone_num), getString(R.string.test_sms)); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_phone_num, Toast.LENGTH_LONG).show(); - } - }); - } - - //飞书机器人 - @SuppressLint("SimpleDateFormat") - private void setFeiShu(final SenderModel senderModel) { - FeiShuSettingVo feiShuSettingVo = null; - //try phrase json setting - if (senderModel != null) { - String jsonSettingStr = senderModel.getJsonSetting(); - if (jsonSettingStr != null) { - feiShuSettingVo = JSON.parseObject(jsonSettingStr, FeiShuSettingVo.class); - } - } - final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); - View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_feishu, null); - - final EditText editTextFeishuName = view1.findViewById(R.id.editTextFeishuName); - if (senderModel != null) - editTextFeishuName.setText(senderModel.getName()); - final EditText editTextFeishuWebhook = view1.findViewById(R.id.editTextFeishuWebhook); - if (feiShuSettingVo != null) - editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook()); - final EditText editTextFeishuSecret = view1.findViewById(R.id.editTextFeishuSecret); - if (feiShuSettingVo != null) - editTextFeishuSecret.setText(feiShuSettingVo.getSecret()); - - Button buttonFeishuOk = view1.findViewById(R.id.buttonFeishuOk); - Button buttonFeishuDel = view1.findViewById(R.id.buttonFeishuDel); - Button buttonFeishuTest = view1.findViewById(R.id.buttonFeishuTest); - alertDialog71 - .setTitle(R.string.setfeishutitle) - .setIcon(R.mipmap.feishu) - .setView(view1) - .create(); - final AlertDialog show = alertDialog71.show(); - buttonFeishuOk.setOnClickListener(view -> { - - if (senderModel == null) { - SenderModel newSenderModel = new SenderModel(); - newSenderModel.setName(editTextFeishuName.getText().toString()); - newSenderModel.setType(TYPE_FEISHU); - newSenderModel.setStatus(STATUS_ON); - FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( - editTextFeishuWebhook.getText().toString(), - editTextFeishuSecret.getText().toString()); - newSenderModel.setJsonSetting(JSON.toJSONString(feiShuSettingVoNew)); - SenderUtil.addSender(newSenderModel); - initSenders(); - adapter.add(senderModels); - } else { - senderModel.setName(editTextFeishuName.getText().toString()); - senderModel.setType(TYPE_FEISHU); - senderModel.setStatus(STATUS_ON); - FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( - editTextFeishuWebhook.getText().toString(), - editTextFeishuSecret.getText().toString()); - senderModel.setJsonSetting(JSON.toJSONString(feiShuSettingVoNew)); - SenderUtil.updateSender(senderModel); - initSenders(); - adapter.update(senderModels); - } - show.dismiss(); - }); - - buttonFeishuDel.setOnClickListener(view -> { - if (senderModel != null) { - SenderUtil.delSender(senderModel.getId()); - initSenders(); - adapter.del(senderModels); - } - show.dismiss(); - }); - - buttonFeishuTest.setOnClickListener(view -> { - String token = editTextFeishuWebhook.getText().toString(); - String secret = editTextFeishuSecret.getText().toString(); - if (!token.isEmpty()) { - try { - SenderFeishuMsg.sendMsg(0, handler, token, secret, getString(R.string.test_content) + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); - } catch (Exception e) { - Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); - e.printStackTrace(); - } - } else { - Toast.makeText(SenderActivity.this, R.string.invalid_webhook, Toast.LENGTH_LONG).show(); - } - }); - } - - @Override - protected void onDestroy() { - Log.d(TAG, "onDestroy"); - super.onDestroy(); - } - - @Override - protected void onResume() { - super.onResume(); - MobclickAgent.onResume(this); - } - - @Override - protected void onPause() { - super.onPause(); - MobclickAgent.onPause(this); - } - -} +package com.idormy.sms.forwarder; + +import static com.idormy.sms.forwarder.model.SenderModel.STATUS_ON; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_BARK; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_DINGDING; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_EMAIL; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_FEISHU; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_QYWX_APP; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_QYWX_GROUP_ROBOT; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_SERVER_CHAN; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_SMS; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_TELEGRAM; +import static com.idormy.sms.forwarder.model.SenderModel.TYPE_WEB_NOTIFY; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.RadioGroup; +import android.widget.Switch; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import com.alibaba.fastjson.JSON; +import com.idormy.sms.forwarder.adapter.SenderAdapter; +import com.idormy.sms.forwarder.model.SenderModel; +import com.idormy.sms.forwarder.model.vo.BarkSettingVo; +import com.idormy.sms.forwarder.model.vo.DingDingSettingVo; +import com.idormy.sms.forwarder.model.vo.EmailSettingVo; +import com.idormy.sms.forwarder.model.vo.FeiShuSettingVo; +import com.idormy.sms.forwarder.model.vo.QYWXAppSettingVo; +import com.idormy.sms.forwarder.model.vo.QYWXGroupRobotSettingVo; +import com.idormy.sms.forwarder.model.vo.ServerChanSettingVo; +import com.idormy.sms.forwarder.model.vo.SmsSettingVo; +import com.idormy.sms.forwarder.model.vo.TelegramSettingVo; +import com.idormy.sms.forwarder.model.vo.WebNotifySettingVo; +import com.idormy.sms.forwarder.sender.SenderBarkMsg; +import com.idormy.sms.forwarder.sender.SenderDingdingMsg; +import com.idormy.sms.forwarder.sender.SenderFeishuMsg; +import com.idormy.sms.forwarder.sender.SenderMailMsg; +import com.idormy.sms.forwarder.sender.SenderQyWxAppMsg; +import com.idormy.sms.forwarder.sender.SenderQyWxGroupRobotMsg; +import com.idormy.sms.forwarder.sender.SenderServerChanMsg; +import com.idormy.sms.forwarder.sender.SenderSmsMsg; +import com.idormy.sms.forwarder.sender.SenderTelegramMsg; +import com.idormy.sms.forwarder.sender.SenderUtil; +import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@SuppressWarnings("deprecation") +public class SenderActivity extends AppCompatActivity { + + public static final int NOTIFY = 0x9731993; + private final String TAG = "SenderActivity"; + // 用于存储数据 + private List senderModels = new ArrayList<>(); + private SenderAdapter adapter; + //消息处理者,创建一个Handler的子类对象,目的是重写Handler的处理消息的方法(handleMessage()) + @SuppressLint("HandlerLeak") + private final Handler handler = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == NOTIFY) { + Toast.makeText(SenderActivity.this, msg.getData().getString("DATA"), Toast.LENGTH_LONG).show(); + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + Log.d(TAG, "onCreate"); + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_sender); + SenderUtil.init(SenderActivity.this); + } + + @Override + protected void onStart() { + super.onStart(); + Log.d(TAG, "onStart"); + + //是否关闭页面提示 + TextView help_tip = findViewById(R.id.help_tip); + help_tip.setVisibility(MyApplication.showHelpTip ? View.VISIBLE : View.GONE); + + // 先拿到数据并放在适配器上 + initSenders(); //初始化数据 + adapter = new SenderAdapter(SenderActivity.this, R.layout.item_sender, senderModels); + + // 将适配器上的数据传递给listView + ListView listView = findViewById(R.id.list_view_sender); + listView.setAdapter(adapter); + + // 为ListView注册一个监听器,当用户点击了ListView中的任何一个子项时,就会回调onItemClick()方法 + // 在这个方法中可以通过position参数判断出用户点击的是那一个子项 + listView.setOnItemClickListener((parent, view, position, id) -> { + SenderModel senderModel = senderModels.get(position); + Log.d(TAG, "onItemClick: " + senderModel); + + switch (senderModel.getType()) { + case TYPE_DINGDING: + setDingDing(senderModel); + break; + case TYPE_EMAIL: + setEmail(senderModel); + break; + case TYPE_BARK: + setBark(senderModel); + break; + case TYPE_WEB_NOTIFY: + setWebNotify(senderModel); + break; + case TYPE_QYWX_GROUP_ROBOT: + setQYWXGroupRobot(senderModel); + break; + case TYPE_QYWX_APP: + setQYWXApp(senderModel); + break; + case TYPE_SERVER_CHAN: + setServerChan(senderModel); + break; + case TYPE_TELEGRAM: + setTelegram(senderModel); + break; + case TYPE_SMS: + setSms(senderModel); + break; + case TYPE_FEISHU: + setFeiShu(senderModel); + break; + default: + Toast.makeText(SenderActivity.this, R.string.invalid_sender, Toast.LENGTH_LONG).show(); + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + break; + } + + }); + + listView.setOnItemLongClickListener((parent, view, position, id) -> { + //定义AlertDialog.Builder对象,当长按列表项的时候弹出确认删除对话框 + AlertDialog.Builder builder = new AlertDialog.Builder(SenderActivity.this); + builder.setTitle(R.string.delete_sender_title); + builder.setMessage(R.string.delete_sender_tips); + + //添加AlertDialog.Builder对象的setPositiveButton()方法 + builder.setPositiveButton(R.string.confirm, (dialog, which) -> { + SenderUtil.delSender(senderModels.get(position).getId()); + initSenders(); + adapter.del(senderModels); + Toast.makeText(getBaseContext(), R.string.delete_sender_toast, Toast.LENGTH_SHORT).show(); + }); + + //添加AlertDialog.Builder对象的setNegativeButton()方法 + builder.setNegativeButton(R.string.cancel, (dialog, which) -> { + + }); + + builder.create().show(); + return true; + }); + } + + // 初始化数据 + private void initSenders() { + senderModels = SenderUtil.getSender(null, null); + } + + public void addSender(View view) { + AlertDialog.Builder builder = new AlertDialog.Builder(SenderActivity.this); + builder.setTitle(R.string.add_sender_title); + //添加列表 + builder.setItems(R.array.add_sender_menu, (dialogInterface, which) -> { + switch (which) { + case TYPE_DINGDING: + setDingDing(null); + break; + case TYPE_EMAIL: + setEmail(null); + break; + case TYPE_BARK: + setBark(null); + break; + case TYPE_WEB_NOTIFY: + setWebNotify(null); + break; + case TYPE_QYWX_GROUP_ROBOT: + setQYWXGroupRobot(null); + break; + case TYPE_QYWX_APP: + setQYWXApp(null); + break; + case TYPE_SERVER_CHAN: + setServerChan(null); + break; + case TYPE_TELEGRAM: + setTelegram(null); + break; + case TYPE_SMS: + setSms(null); + break; + case TYPE_FEISHU: + setFeiShu(null); + break; + default: + Toast.makeText(SenderActivity.this, R.string.not_supported, Toast.LENGTH_LONG).show(); + break; + } + }); + builder.show(); + Log.d(TAG, "setDingDing show" + senderModels.size()); + } + + //钉钉机器人 + @SuppressLint("SimpleDateFormat") + private void setDingDing(final SenderModel senderModel) { + DingDingSettingVo dingDingSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + dingDingSettingVo = JSON.parseObject(jsonSettingStr, DingDingSettingVo.class); + } + } + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_dingding, null); + + final EditText editTextDingdingName = view1.findViewById(R.id.editTextDingdingName); + if (senderModel != null) + editTextDingdingName.setText(senderModel.getName()); + final EditText editTextDingdingToken = view1.findViewById(R.id.editTextDingdingToken); + if (dingDingSettingVo != null) + editTextDingdingToken.setText(dingDingSettingVo.getToken()); + final EditText editTextDingdingSecret = view1.findViewById(R.id.editTextDingdingSecret); + if (dingDingSettingVo != null) + editTextDingdingSecret.setText(dingDingSettingVo.getSecret()); + final EditText editTextDingdingAtMobiles = view1.findViewById(R.id.editTextDingdingAtMobiles); + if (dingDingSettingVo != null && dingDingSettingVo.getAtMobiles() != null) + editTextDingdingAtMobiles.setText(dingDingSettingVo.getAtMobiles()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchDingdingAtAll = view1.findViewById(R.id.switchDingdingAtAll); + if (dingDingSettingVo != null && dingDingSettingVo.getAtAll() != null) + switchDingdingAtAll.setChecked(dingDingSettingVo.getAtAll()); + + Button buttonDingdingOk = view1.findViewById(R.id.buttonDingdingOk); + Button buttonDingdingDel = view1.findViewById(R.id.buttonDingdingDel); + Button buttonDingdingTest = view1.findViewById(R.id.buttonDingdingTest); + alertDialog71 + .setTitle(R.string.setdingdingtitle) + .setIcon(R.mipmap.dingding) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + buttonDingdingOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextDingdingName.getText().toString()); + newSenderModel.setType(TYPE_DINGDING); + newSenderModel.setStatus(STATUS_ON); + DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( + editTextDingdingToken.getText().toString(), + editTextDingdingSecret.getText().toString(), + editTextDingdingAtMobiles.getText().toString(), + switchDingdingAtAll.isChecked()); + newSenderModel.setJsonSetting(JSON.toJSONString(dingDingSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextDingdingName.getText().toString()); + senderModel.setType(TYPE_DINGDING); + senderModel.setStatus(STATUS_ON); + DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( + editTextDingdingToken.getText().toString(), + editTextDingdingSecret.getText().toString(), + editTextDingdingAtMobiles.getText().toString(), + switchDingdingAtAll.isChecked()); + senderModel.setJsonSetting(JSON.toJSONString(dingDingSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + + show.dismiss(); + + + }); + buttonDingdingDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonDingdingTest.setOnClickListener(view -> { + String token = editTextDingdingToken.getText().toString(); + String secret = editTextDingdingSecret.getText().toString(); + String atMobiles = editTextDingdingAtMobiles.getText().toString(); + Boolean atAll = switchDingdingAtAll.isChecked(); + if (!token.isEmpty()) { + try { + SenderDingdingMsg.sendMsg(0, handler, token, secret, atMobiles, atAll, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_token, Toast.LENGTH_LONG).show(); + } + }); + } + + //邮箱 + @SuppressLint("SimpleDateFormat") + private void setEmail(final SenderModel senderModel) { + EmailSettingVo emailSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + emailSettingVo = JSON.parseObject(jsonSettingStr, EmailSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_email, null); + + final EditText editTextEmailName = view1.findViewById(R.id.editTextEmailName); + if (senderModel != null) editTextEmailName.setText(senderModel.getName()); + final EditText editTextEmailHost = view1.findViewById(R.id.editTextEmailHost); + if (emailSettingVo != null) editTextEmailHost.setText(emailSettingVo.getHost()); + final EditText editTextEmailPort = view1.findViewById(R.id.editTextEmailPort); + if (emailSettingVo != null) editTextEmailPort.setText(emailSettingVo.getPort()); + + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchEmailSSl = view1.findViewById(R.id.switchEmailSSl); + if (emailSettingVo != null) switchEmailSSl.setChecked(emailSettingVo.getSsl()); + final EditText editTextEmailFromAdd = view1.findViewById(R.id.editTextEmailFromAdd); + if (emailSettingVo != null) editTextEmailFromAdd.setText(emailSettingVo.getFromEmail()); + final EditText editTextEmailNickname = view1.findViewById(R.id.editTextEmailNickname); + if (emailSettingVo != null) editTextEmailNickname.setText(emailSettingVo.getNickname()); + final EditText editTextEmailPsw = view1.findViewById(R.id.editTextEmailPsw); + if (emailSettingVo != null) editTextEmailPsw.setText(emailSettingVo.getPwd()); + final EditText editTextEmailToAdd = view1.findViewById(R.id.editTextEmailToAdd); + if (emailSettingVo != null) editTextEmailToAdd.setText(emailSettingVo.getToEmail()); + + Button buttonEmailOk = view1.findViewById(R.id.buttonEmailOk); + Button buttonEmailDel = view1.findViewById(R.id.buttonEmailDel); + Button buttonEmailTest = view1.findViewById(R.id.buttonEmailTest); + alertDialog71 + .setTitle(R.string.setemailtitle) + .setIcon(R.mipmap.email) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonEmailOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextEmailName.getText().toString()); + newSenderModel.setType(TYPE_EMAIL); + newSenderModel.setStatus(STATUS_ON); + EmailSettingVo emailSettingVoNew = new EmailSettingVo( + editTextEmailHost.getText().toString(), + editTextEmailPort.getText().toString(), + switchEmailSSl.isChecked(), + editTextEmailFromAdd.getText().toString(), + editTextEmailNickname.getText().toString(), + editTextEmailPsw.getText().toString(), + editTextEmailToAdd.getText().toString() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextEmailName.getText().toString()); + senderModel.setType(TYPE_EMAIL); + senderModel.setStatus(STATUS_ON); + EmailSettingVo emailSettingVoNew = new EmailSettingVo( + editTextEmailHost.getText().toString(), + editTextEmailPort.getText().toString(), + switchEmailSSl.isChecked(), + editTextEmailFromAdd.getText().toString(), + editTextEmailNickname.getText().toString(), + editTextEmailPsw.getText().toString(), + editTextEmailToAdd.getText().toString() + ); + senderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + + }); + buttonEmailDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonEmailTest.setOnClickListener(view -> { + String host = editTextEmailHost.getText().toString(); + String port = editTextEmailPort.getText().toString(); + boolean ssl = switchEmailSSl.isChecked(); + String fromEmail = editTextEmailFromAdd.getText().toString(); + String pwd = editTextEmailPsw.getText().toString(); + String toEmail = editTextEmailToAdd.getText().toString(); + + String nickname = editTextEmailNickname.getText().toString(); + if (nickname.equals("")) { + nickname = "SmsForwarder"; + } + + if (!host.isEmpty() && !port.isEmpty() && !fromEmail.isEmpty() && !pwd.isEmpty() && !toEmail.isEmpty()) { + try { + SenderMailMsg.sendEmail(0, handler, host, port, ssl, fromEmail, nickname, pwd, toEmail, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_email, Toast.LENGTH_LONG).show(); + } + }); + } + + //Bark + private void setBark(final SenderModel senderModel) { + BarkSettingVo barkSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + barkSettingVo = JSON.parseObject(jsonSettingStr, BarkSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_bark, null); + + final EditText editTextBarkName = view1.findViewById(R.id.editTextBarkName); + if (senderModel != null) editTextBarkName.setText(senderModel.getName()); + final EditText editTextBarkServer = view1.findViewById(R.id.editTextBarkServer); + if (barkSettingVo != null) editTextBarkServer.setText(barkSettingVo.getServer()); + final EditText editTextBarkIcon = view1.findViewById(R.id.editTextBarkIcon); + if (barkSettingVo != null) editTextBarkIcon.setText(barkSettingVo.getIcon()); + + Button buttonBarkOk = view1.findViewById(R.id.buttonBarkOk); + Button buttonBarkDel = view1.findViewById(R.id.buttonBarkDel); + Button buttonBarkTest = view1.findViewById(R.id.buttonBarkTest); + alertDialog71 + .setTitle(R.string.setbarktitle) + .setIcon(R.mipmap.bark) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonBarkOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextBarkName.getText().toString()); + newSenderModel.setType(TYPE_BARK); + newSenderModel.setStatus(STATUS_ON); + BarkSettingVo barkSettingVoNew = new BarkSettingVo( + editTextBarkServer.getText().toString(), + editTextBarkIcon.getText().toString() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(barkSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextBarkName.getText().toString()); + senderModel.setType(TYPE_BARK); + senderModel.setStatus(STATUS_ON); + BarkSettingVo barkSettingVoNew = new BarkSettingVo( + editTextBarkServer.getText().toString(), + editTextBarkIcon.getText().toString() + ); + senderModel.setJsonSetting(JSON.toJSONString(barkSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + }); + buttonBarkDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonBarkTest.setOnClickListener(view -> { + String barkServer = editTextBarkServer.getText().toString(); + String barkIcon = editTextBarkIcon.getText().toString(); + if (!barkServer.isEmpty()) { + try { + SenderBarkMsg.sendMsg(0, handler, barkServer, barkIcon, getString(R.string.test_phone_num), getString(R.string.test_sms), getString(R.string.test_group_name)); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_bark_server, Toast.LENGTH_LONG).show(); + } + }); + } + + //Server酱·Turbo版 + private void setServerChan(final SenderModel senderModel) { + ServerChanSettingVo serverchanSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + serverchanSettingVo = JSON.parseObject(jsonSettingStr, ServerChanSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_serverchan, null); + + final EditText editTextServerChanName = view1.findViewById(R.id.editTextServerChanName); + if (senderModel != null) editTextServerChanName.setText(senderModel.getName()); + final EditText editTextServerChanSendKey = view1.findViewById(R.id.editTextServerChanSendKey); + if (serverchanSettingVo != null) + editTextServerChanSendKey.setText(serverchanSettingVo.getSendKey()); + + Button buttonServerChanOk = view1.findViewById(R.id.buttonServerChanOk); + Button buttonServerChanDel = view1.findViewById(R.id.buttonServerChanDel); + Button buttonServerChanTest = view1.findViewById(R.id.buttonServerChanTest); + alertDialog71 + .setTitle(R.string.setserverchantitle) + .setIcon(R.mipmap.serverchan) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonServerChanOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextServerChanName.getText().toString()); + newSenderModel.setType(TYPE_SERVER_CHAN); + newSenderModel.setStatus(STATUS_ON); + ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( + editTextServerChanSendKey.getText().toString() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(serverChanSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextServerChanName.getText().toString()); + senderModel.setType(TYPE_SERVER_CHAN); + senderModel.setStatus(STATUS_ON); + ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( + editTextServerChanSendKey.getText().toString() + ); + senderModel.setJsonSetting(JSON.toJSONString(serverChanSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + }); + buttonServerChanDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonServerChanTest.setOnClickListener(view -> { + String serverChanServer = editTextServerChanSendKey.getText().toString(); + if (!serverChanServer.isEmpty()) { + try { + SenderServerChanMsg.sendMsg(0, handler, serverChanServer, getString(R.string.test_phone_num), getString(R.string.test_sms)); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_sendkey, Toast.LENGTH_LONG).show(); + } + }); + } + + //webhook + @SuppressLint("SimpleDateFormat") + private void setWebNotify(final SenderModel senderModel) { + WebNotifySettingVo webNotifySettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + webNotifySettingVo = JSON.parseObject(jsonSettingStr, WebNotifySettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_webnotify, null); + + final EditText editTextWebNotifyName = view1.findViewById(R.id.editTextWebNotifyName); + if (senderModel != null) editTextWebNotifyName.setText(senderModel.getName()); + final EditText editTextWebNotifyWebServer = view1.findViewById(R.id.editTextWebNotifyWebServer); + if (webNotifySettingVo != null) editTextWebNotifyWebServer.setText(webNotifySettingVo.getWebServer()); + final EditText editTextWebNotifyWebParams = view1.findViewById(R.id.editTextWebNotifyWebParams); + if (webNotifySettingVo != null) editTextWebNotifyWebParams.setText(webNotifySettingVo.getWebParams()); + final EditText editTextWebNotifySecret = view1.findViewById(R.id.editTextWebNotifySecret); + if (webNotifySettingVo != null) editTextWebNotifySecret.setText(webNotifySettingVo.getSecret()); + final RadioGroup radioGroupWebNotifyMethod = view1.findViewById(R.id.radioGroupWebNotifyMethod); + if (webNotifySettingVo != null) radioGroupWebNotifyMethod.check(webNotifySettingVo.getWebNotifyMethodCheckId()); + + Button buttonWebNotifyOk = view1.findViewById(R.id.buttonWebNotifyOk); + Button buttonWebNotifyDel = view1.findViewById(R.id.buttonWebNotifyDel); + Button buttonWebNotifyTest = view1.findViewById(R.id.buttonWebNotifyTest); + alertDialog71 + .setTitle(R.string.setwebnotifytitle) + .setIcon(R.mipmap.webhook) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonWebNotifyOk.setOnClickListener(view -> { + WebNotifySettingVo webNotifySettingVoNew = new WebNotifySettingVo( + editTextWebNotifyWebServer.getText().toString(), + editTextWebNotifySecret.getText().toString(), + (radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"), + editTextWebNotifyWebParams.getText().toString() + ); + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextWebNotifyName.getText().toString()); + newSenderModel.setType(TYPE_WEB_NOTIFY); + newSenderModel.setStatus(STATUS_ON); + newSenderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); + SenderUtil.addSender(newSenderModel); + } else { + senderModel.setName(editTextWebNotifyName.getText().toString()); + senderModel.setType(TYPE_WEB_NOTIFY); + senderModel.setStatus(STATUS_ON); + senderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); + SenderUtil.updateSender(senderModel); + } + initSenders(); + adapter.update(senderModels); + show.dismiss(); + }); + buttonWebNotifyDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonWebNotifyTest.setOnClickListener(view -> { + String webServer = editTextWebNotifyWebServer.getText().toString(); + String webParams = editTextWebNotifyWebParams.getText().toString(); + String secret = editTextWebNotifySecret.getText().toString(); + String method = radioGroupWebNotifyMethod.getCheckedRadioButtonId() == R.id.radioWebNotifyMethodGet ? "GET" : "POST"; + if (!webServer.isEmpty()) { + try { + SenderWebNotifyMsg.sendMsg(0, handler, webServer, webParams, secret, method, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_webserver, Toast.LENGTH_LONG).show(); + } + }); + } + + //企业微信群机器人 + @SuppressLint("SimpleDateFormat") + private void setQYWXGroupRobot(final SenderModel senderModel) { + QYWXGroupRobotSettingVo qywxGroupRobotSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + qywxGroupRobotSettingVo = JSON.parseObject(jsonSettingStr, QYWXGroupRobotSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxgrouprobot, null); + + final EditText editTextQYWXGroupRobotName = view1.findViewById(R.id.editTextQYWXGroupRobotName); + if (senderModel != null) editTextQYWXGroupRobotName.setText(senderModel.getName()); + final EditText editTextQYWXGroupRobotWebHook = view1.findViewById(R.id.editTextQYWXGroupRobotWebHook); + if (qywxGroupRobotSettingVo != null) + editTextQYWXGroupRobotWebHook.setText(qywxGroupRobotSettingVo.getWebHook()); + + Button buttonQyWxGroupRobotOk = view1.findViewById(R.id.buttonQyWxGroupRobotOk); + Button buttonQyWxGroupRobotDel = view1.findViewById(R.id.buttonQyWxGroupRobotDel); + Button buttonQyWxGroupRobotTest = view1.findViewById(R.id.buttonQyWxGroupRobotTest); + alertDialog71 + .setTitle(R.string.setqywxgrouprobottitle) + .setIcon(R.mipmap.qywx) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonQyWxGroupRobotOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextQYWXGroupRobotName.getText().toString()); + newSenderModel.setType(TYPE_QYWX_GROUP_ROBOT); + newSenderModel.setStatus(STATUS_ON); + QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( + editTextQYWXGroupRobotWebHook.getText().toString() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(qywxGroupRobotSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextQYWXGroupRobotName.getText().toString()); + senderModel.setType(TYPE_QYWX_GROUP_ROBOT); + senderModel.setStatus(STATUS_ON); + QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( + editTextQYWXGroupRobotWebHook.getText().toString() + ); + senderModel.setJsonSetting(JSON.toJSONString(qywxGroupRobotSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + }); + buttonQyWxGroupRobotDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonQyWxGroupRobotTest.setOnClickListener(view -> { + String webHook = editTextQYWXGroupRobotWebHook.getText().toString(); + if (!webHook.isEmpty()) { + try { + SenderQyWxGroupRobotMsg.sendMsg(0, handler, webHook, "SmsForwarder Title", R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_webhook, Toast.LENGTH_LONG).show(); + } + }); + } + + //企业微信应用 + @SuppressLint({"SimpleDateFormat", "SetTextI18n"}) + private void setQYWXApp(final SenderModel senderModel) { + QYWXAppSettingVo QYWXAppSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + QYWXAppSettingVo = JSON.parseObject(jsonSettingStr, QYWXAppSettingVo.class); + } + } + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxapp, null); + + final EditText editTextQYWXAppName = view1.findViewById(R.id.editTextQYWXAppName); + if (senderModel != null) + editTextQYWXAppName.setText(senderModel.getName()); + final EditText editTextQYWXAppCorpID = view1.findViewById(R.id.editTextQYWXAppCorpID); + final EditText editTextQYWXAppAgentID = view1.findViewById(R.id.editTextQYWXAppAgentID); + final EditText editTextQYWXAppSecret = view1.findViewById(R.id.editTextQYWXAppSecret); + final LinearLayout linearLayoutQYWXAppToUser = view1.findViewById(R.id.linearLayoutQYWXAppToUser); + final EditText editTextQYWXAppToUser = view1.findViewById(R.id.editTextQYWXAppToUser); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchQYWXAppAtAll = view1.findViewById(R.id.switchQYWXAppAtAll); + if (QYWXAppSettingVo != null) { + editTextQYWXAppCorpID.setText(QYWXAppSettingVo.getCorpID()); + editTextQYWXAppAgentID.setText(QYWXAppSettingVo.getAgentID()); + editTextQYWXAppSecret.setText(QYWXAppSettingVo.getSecret()); + editTextQYWXAppToUser.setText(QYWXAppSettingVo.getToUser()); + switchQYWXAppAtAll.setChecked(QYWXAppSettingVo.getAtAll()); + linearLayoutQYWXAppToUser.setVisibility(QYWXAppSettingVo.getAtAll() ? View.GONE : View.VISIBLE); + } + switchQYWXAppAtAll.setOnCheckedChangeListener((buttonView, isChecked) -> { + if (isChecked) { + linearLayoutQYWXAppToUser.setVisibility(View.GONE); + editTextQYWXAppToUser.setText("@all"); + } else { + linearLayoutQYWXAppToUser.setVisibility(View.VISIBLE); + editTextQYWXAppToUser.setText(""); + } + Log.d(TAG, "onCheckedChanged:" + isChecked); + }); + + Button buttonQYWXAppOk = view1.findViewById(R.id.buttonQYWXAppOk); + Button buttonQYWXAppDel = view1.findViewById(R.id.buttonQYWXAppDel); + Button buttonQYWXAppTest = view1.findViewById(R.id.buttonQYWXAppTest); + alertDialog71 + .setTitle(R.string.setqywxapptitle) + .setIcon(R.mipmap.qywxapp) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + buttonQYWXAppOk.setOnClickListener(view -> { + String toUser = editTextQYWXAppToUser.getText().toString(); + if (toUser.isEmpty()) { + Toast.makeText(SenderActivity.this, R.string.invalid_at_mobiles, Toast.LENGTH_LONG).show(); + editTextQYWXAppToUser.setFocusable(true); + editTextQYWXAppToUser.requestFocus(); + return; + } + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextQYWXAppName.getText().toString()); + newSenderModel.setType(TYPE_QYWX_APP); + newSenderModel.setStatus(STATUS_ON); + QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( + editTextQYWXAppCorpID.getText().toString(), + editTextQYWXAppAgentID.getText().toString(), + editTextQYWXAppSecret.getText().toString(), + editTextQYWXAppToUser.getText().toString(), + switchQYWXAppAtAll.isChecked()); + newSenderModel.setJsonSetting(JSON.toJSONString(QYWXAppSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextQYWXAppName.getText().toString()); + senderModel.setType(TYPE_QYWX_APP); + senderModel.setStatus(STATUS_ON); + QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( + editTextQYWXAppCorpID.getText().toString(), + editTextQYWXAppAgentID.getText().toString(), + editTextQYWXAppSecret.getText().toString(), + editTextQYWXAppToUser.getText().toString(), + switchQYWXAppAtAll.isChecked()); + senderModel.setJsonSetting(JSON.toJSONString(QYWXAppSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + }); + buttonQYWXAppDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonQYWXAppTest.setOnClickListener(view -> { + String cropID = editTextQYWXAppCorpID.getText().toString(); + String agentID = editTextQYWXAppAgentID.getText().toString(); + String secret = editTextQYWXAppSecret.getText().toString(); + String toUser = editTextQYWXAppToUser.getText().toString(); + //Boolean atAll = switchQYWXAppAtAll.isChecked(); + if (!toUser.isEmpty()) { + try { + SenderQyWxAppMsg.sendMsg(0, handler, cropID, agentID, secret, toUser, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())), true); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_at_mobiles, Toast.LENGTH_LONG).show(); + } + }); + } + + //Telegram机器人 + private void setTelegram(final SenderModel senderModel) { + TelegramSettingVo telegramSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + telegramSettingVo = JSON.parseObject(jsonSettingStr, TelegramSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_telegram, null); + + final EditText editTextTelegramName = view1.findViewById(R.id.editTextTelegramName); + if (senderModel != null) editTextTelegramName.setText(senderModel.getName()); + final EditText editTextTelegramApiToken = view1.findViewById(R.id.editTextTelegramApiToken); + if (telegramSettingVo != null) + editTextTelegramApiToken.setText(telegramSettingVo.getApiToken()); + final EditText editTextTelegramChatId = view1.findViewById(R.id.editTextTelegramChatId); + if (telegramSettingVo != null) + editTextTelegramChatId.setText(telegramSettingVo.getChatId()); + + Button buttonTelegramOk = view1.findViewById(R.id.buttonTelegramOk); + Button buttonTelegramDel = view1.findViewById(R.id.buttonTelegramDel); + Button buttonTelegramTest = view1.findViewById(R.id.buttonTelegramTest); + alertDialog71 + .setTitle(R.string.settelegramtitle) + .setIcon(R.mipmap.telegram) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonTelegramOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextTelegramName.getText().toString()); + newSenderModel.setType(TYPE_TELEGRAM); + newSenderModel.setStatus(STATUS_ON); + TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( + editTextTelegramApiToken.getText().toString(), + editTextTelegramChatId.getText().toString() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextTelegramName.getText().toString()); + senderModel.setType(TYPE_TELEGRAM); + senderModel.setStatus(STATUS_ON); + TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( + editTextTelegramApiToken.getText().toString(), + editTextTelegramChatId.getText().toString() + ); + senderModel.setJsonSetting(JSON.toJSONString(telegramSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + }); + buttonTelegramDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonTelegramTest.setOnClickListener(view -> { + String apiToken = editTextTelegramApiToken.getText().toString(); + String chatId = editTextTelegramChatId.getText().toString(); + if (!apiToken.isEmpty() && !chatId.isEmpty()) { + try { + SenderTelegramMsg.sendMsg(0, handler, apiToken, chatId, getString(R.string.test_phone_num), getString(R.string.test_sms)); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_apiToken_or_chatId, Toast.LENGTH_LONG).show(); + } + }); + } + + //短信 + private void setSms(final SenderModel senderModel) { + SmsSettingVo smsSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + Log.d(TAG, "jsonSettingStr = " + jsonSettingStr); + if (jsonSettingStr != null) { + smsSettingVo = JSON.parseObject(jsonSettingStr, SmsSettingVo.class); + } + } + + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_sms, null); + + final EditText editTextSmsName = view1.findViewById(R.id.editTextSmsName); + if (senderModel != null) editTextSmsName.setText(senderModel.getName()); + final RadioGroup radioGroupSmsSimSlot = view1.findViewById(R.id.radioGroupSmsSimSlot); + if (smsSettingVo != null) radioGroupSmsSimSlot.check(smsSettingVo.getSmsSimSlotCheckId()); + final EditText editTextSmsMobiles = view1.findViewById(R.id.editTextSmsMobiles); + if (smsSettingVo != null) editTextSmsMobiles.setText(smsSettingVo.getMobiles()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchSmsOnlyNoNetwork = view1.findViewById(R.id.switchSmsOnlyNoNetwork); + if (smsSettingVo != null) switchSmsOnlyNoNetwork.setChecked(smsSettingVo.getOnlyNoNetwork()); + + Button buttonSmsOk = view1.findViewById(R.id.buttonSmsOk); + Button buttonSmsDel = view1.findViewById(R.id.buttonSmsDel); + Button buttonSmsTest = view1.findViewById(R.id.buttonSmsTest); + alertDialog71 + .setTitle(R.string.setsmstitle) + .setIcon(R.mipmap.sms) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + + buttonSmsOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextSmsName.getText().toString()); + newSenderModel.setType(TYPE_SMS); + newSenderModel.setStatus(STATUS_ON); + SmsSettingVo smsSettingVoNew = new SmsSettingVo( + newSenderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), + editTextSmsMobiles.getText().toString(), + switchSmsOnlyNoNetwork.isChecked() + ); + newSenderModel.setJsonSetting(JSON.toJSONString(smsSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextSmsName.getText().toString()); + senderModel.setType(TYPE_SMS); + senderModel.setStatus(STATUS_ON); + SmsSettingVo smsSettingVoNew = new SmsSettingVo( + senderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), + editTextSmsMobiles.getText().toString(), + switchSmsOnlyNoNetwork.isChecked() + ); + senderModel.setJsonSetting(JSON.toJSONString(smsSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + + show.dismiss(); + + }); + buttonSmsDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + buttonSmsTest.setOnClickListener(view -> { + int simSlot = 0; + if (R.id.btnSmsSimSlot2 == radioGroupSmsSimSlot.getCheckedRadioButtonId()) { + simSlot = 1; + } + String mobiles = editTextSmsMobiles.getText().toString(); + Boolean onlyNoNetwork = switchSmsOnlyNoNetwork.isChecked(); + if (!mobiles.isEmpty()) { + try { + SenderSmsMsg.sendMsg(0, handler, simSlot, mobiles, onlyNoNetwork, getString(R.string.test_phone_num), getString(R.string.test_sms)); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_phone_num, Toast.LENGTH_LONG).show(); + } + }); + } + + //飞书机器人 + @SuppressLint("SimpleDateFormat") + private void setFeiShu(final SenderModel senderModel) { + FeiShuSettingVo feiShuSettingVo = null; + //try phrase json setting + if (senderModel != null) { + String jsonSettingStr = senderModel.getJsonSetting(); + if (jsonSettingStr != null) { + feiShuSettingVo = JSON.parseObject(jsonSettingStr, FeiShuSettingVo.class); + } + } + final AlertDialog.Builder alertDialog71 = new AlertDialog.Builder(SenderActivity.this); + View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_feishu, null); + + final EditText editTextFeishuName = view1.findViewById(R.id.editTextFeishuName); + if (senderModel != null) + editTextFeishuName.setText(senderModel.getName()); + final EditText editTextFeishuWebhook = view1.findViewById(R.id.editTextFeishuWebhook); + if (feiShuSettingVo != null) + editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook()); + final EditText editTextFeishuSecret = view1.findViewById(R.id.editTextFeishuSecret); + if (feiShuSettingVo != null) + editTextFeishuSecret.setText(feiShuSettingVo.getSecret()); + + Button buttonFeishuOk = view1.findViewById(R.id.buttonFeishuOk); + Button buttonFeishuDel = view1.findViewById(R.id.buttonFeishuDel); + Button buttonFeishuTest = view1.findViewById(R.id.buttonFeishuTest); + alertDialog71 + .setTitle(R.string.setfeishutitle) + .setIcon(R.mipmap.feishu) + .setView(view1) + .create(); + final AlertDialog show = alertDialog71.show(); + buttonFeishuOk.setOnClickListener(view -> { + + if (senderModel == null) { + SenderModel newSenderModel = new SenderModel(); + newSenderModel.setName(editTextFeishuName.getText().toString()); + newSenderModel.setType(TYPE_FEISHU); + newSenderModel.setStatus(STATUS_ON); + FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( + editTextFeishuWebhook.getText().toString(), + editTextFeishuSecret.getText().toString()); + newSenderModel.setJsonSetting(JSON.toJSONString(feiShuSettingVoNew)); + SenderUtil.addSender(newSenderModel); + initSenders(); + adapter.add(senderModels); + } else { + senderModel.setName(editTextFeishuName.getText().toString()); + senderModel.setType(TYPE_FEISHU); + senderModel.setStatus(STATUS_ON); + FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( + editTextFeishuWebhook.getText().toString(), + editTextFeishuSecret.getText().toString()); + senderModel.setJsonSetting(JSON.toJSONString(feiShuSettingVoNew)); + SenderUtil.updateSender(senderModel); + initSenders(); + adapter.update(senderModels); + } + show.dismiss(); + }); + + buttonFeishuDel.setOnClickListener(view -> { + if (senderModel != null) { + SenderUtil.delSender(senderModel.getId()); + initSenders(); + adapter.del(senderModels); + } + show.dismiss(); + }); + + buttonFeishuTest.setOnClickListener(view -> { + String token = editTextFeishuWebhook.getText().toString(); + String secret = editTextFeishuSecret.getText().toString(); + if (!token.isEmpty()) { + try { + SenderFeishuMsg.sendMsg(0, handler, token, secret, getString(R.string.test_content) + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); + } catch (Exception e) { + Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show(); + e.printStackTrace(); + } + } else { + Toast.makeText(SenderActivity.this, R.string.invalid_webhook, Toast.LENGTH_LONG).show(); + } + }); + } + + @Override + protected void onDestroy() { + Log.d(TAG, "onDestroy"); + super.onDestroy(); + } + + @Override + protected void onResume() { + super.onResume(); + //MobclickAgent.onResume(this); + } + + @Override + protected void onPause() { + super.onPause(); + //MobclickAgent.onPause(this); + } + +} 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 60abc6c2..0538f630 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java @@ -65,6 +65,9 @@ public class SettingActivity extends AppCompatActivity { @SuppressLint("UseSwitchCompatOrMaterialCode") Switch switch_enable_phone = findViewById(R.id.switch_enable_phone); switchEnablePhone(switch_enable_phone); + @SuppressLint("UseSwitchCompatOrMaterialCode") Switch switch_enable_app_notify = findViewById(R.id.switch_enable_app_notify); + switchEnableAppNotify(switch_enable_app_notify); + EditText textSmsTemplate = findViewById(R.id.text_sms_template); editSmsTemplate(textSmsTemplate); } @@ -79,6 +82,16 @@ public class SettingActivity extends AppCompatActivity { }); } + //设置转发APP通知 + private void switchEnableAppNotify(@SuppressLint("UseSwitchCompatOrMaterialCode") Switch switch_enable_app_notify) { + switch_enable_app_notify.setChecked(SettingUtil.getSwitchEnableAppNotify()); + + switch_enable_app_notify.setOnCheckedChangeListener((buttonView, isChecked) -> { + SettingUtil.switchEnableAppNotify(isChecked); + Log.d(TAG, "onCheckedChanged:" + isChecked); + }); + } + //设置设备名称 private void editAddExtraDeviceMark(final EditText et_add_extra_device_mark) { et_add_extra_device_mark.setText(SettingUtil.getAddExtraDeviceMark()); diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/LogModel.java b/app/src/main/java/com/idormy/sms/forwarder/model/LogModel.java index 0ecddf1d..e76a2cb3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/LogModel.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/LogModel.java @@ -11,12 +11,14 @@ public class LogModel { private Long ruleId; private Long time; private String simInfo; + private String type; - public LogModel(String from, String content, String simInfo, Long ruleId) { + public LogModel(String type, String from, String content, String simInfo, Long ruleId) { this.from = from; this.content = content; this.simInfo = simInfo; this.ruleId = ruleId; + this.type = type; } @NonNull @@ -27,6 +29,7 @@ public class LogModel { ", content='" + content + '\'' + ", simInfo=" + simInfo + ", ruleId=" + ruleId + + ", type=" + type + ", time=" + time + '}'; } diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/LogTable.java b/app/src/main/java/com/idormy/sms/forwarder/model/LogTable.java index c7c05ee6..b518523d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/LogTable.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/LogTable.java @@ -11,6 +11,7 @@ public final class LogTable { /* Inner class that defines the table contents */ public static class LogEntry implements BaseColumns { public static final String TABLE_NAME = "log"; + public static final String COLUMN_NAME_TYPE = "type"; public static final String COLUMN_NAME_FROM = "l_from"; public static final String COLUMN_NAME_CONTENT = "content"; public static final String COLUMN_NAME_RULE_ID = "rule_id"; diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java index 9bdec96f..e9b3bf40 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java @@ -37,6 +37,13 @@ public class RuleModel { public static final String CHECK_SIM_SLOT_1 = "SIM1"; public static final String CHECK_SIM_SLOT_2 = "SIM2"; public static final Map SIM_SLOT_MAP = new HashMap<>(); + public static final Map TYPE_MAP = new HashMap<>(); + + static { + TYPE_MAP.put("sms", "短信"); + TYPE_MAP.put("call", "来电"); + TYPE_MAP.put("app", "应用"); + } static { FILED_MAP.put("transpond_all", "全部转发"); @@ -63,6 +70,7 @@ public class RuleModel { private String TAG = "RuleModel"; private Long id; + private String type; private String filed; private String check; private String value; diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java b/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java index d90b617f..5e9b8080 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java @@ -11,6 +11,7 @@ public final class RuleTable { /* Inner class that defines the table contents */ public static class RuleEntry implements BaseColumns { public static final String TABLE_NAME = "rule"; + public static final String COLUMN_NAME_TYPE = "type"; public static final String COLUMN_NAME_FILED = "filed"; public static final String COLUMN_NAME_CHECK = "tcheck"; public static final String COLUMN_NAME_VALUE = "value"; 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 e7d8c59c..b9c6deef 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 @@ -32,12 +32,15 @@ public class LogVo { } public int getSimImageId() { - if (this.simInfo != null && !this.simInfo.isEmpty() - && this.simInfo.replace("-", "").startsWith("SIM2")) { - return R.mipmap.sim2; + if (this.simInfo != null && !this.simInfo.isEmpty()) { + if (this.simInfo.replace("-", "").startsWith("SIM2")) { + return R.drawable.sim2; //mipmap + } else if (this.simInfo.replace("-", "").startsWith("SIM1")) { + return R.drawable.sim1; + } } - return R.mipmap.sim1; + return R.drawable.app; } public int getStatusImageId() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java index 771c123c..2d347f7c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.java @@ -90,6 +90,6 @@ public class PhoneStateReceiver extends BroadcastReceiver { } SmsVo smsVo = new SmsVo(phoneNumber, name + context.getString(R.string.calling), new Date(), simInfo); Log.d(TAG, "send_msg" + smsVo.toString()); - SendUtil.send_msg(context, smsVo, simId); + SendUtil.send_msg(context, smsVo, simId, "call"); } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsForwarderBroadcastReceiver.java b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsForwarderBroadcastReceiver.java index af6e631c..c1c4d601 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsForwarderBroadcastReceiver.java +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsForwarderBroadcastReceiver.java @@ -81,7 +81,7 @@ public class SmsForwarderBroadcastReceiver extends BroadcastReceiver { smsVoList.add(new SmsVo(mobile, mobileToContent.get(mobile), date, simInfo)); } Log.d(TAG, "短信:" + smsVoList); - SendUtil.send_msg_list(context, smsVoList, simId); + SendUtil.send_msg_list(context, smsVoList, simId, "sms"); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java index 31ff28ed..6614659a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java @@ -39,20 +39,20 @@ import java.util.List; public class SendUtil { private static final String TAG = "SendUtil"; - public static void send_msg_list(Context context, List smsVoList, int simId) { + public static void send_msg_list(Context context, List smsVoList, int simId, String type) { Log.i(TAG, "send_msg_list size: " + smsVoList.size()); for (SmsVo smsVo : smsVoList) { - SendUtil.send_msg(context, smsVo, simId); + SendUtil.send_msg(context, smsVo, simId, type); } } - public static void send_msg(Context context, SmsVo smsVo, int simId) { + public static void send_msg(Context context, SmsVo smsVo, int simId, String type) { Log.i(TAG, "send_msg smsVo:" + smsVo); RuleUtil.init(context); LogUtil.init(context); String key = "SIM" + simId; - List ruleList = RuleUtil.getRule(null, key); + List ruleList = RuleUtil.getRule(null, key, type); if (!ruleList.isEmpty()) { SenderUtil.init(context); for (RuleModel ruleModel : ruleList) { @@ -62,7 +62,7 @@ public class SendUtil { List senderModels = SenderUtil.getSender(ruleModel.getSenderId(), null); for (SenderModel senderModel : senderModels ) { - long logId = LogUtil.addLog(new LogModel(smsVo.getMobile(), smsVo.getContent(), smsVo.getSimInfo(), ruleModel.getId())); + long logId = LogUtil.addLog(new LogModel(type, smsVo.getMobile(), smsVo.getContent(), smsVo.getSimInfo(), ruleModel.getId())); String smsTemplate = ruleModel.getSwitchSmsTemplate() ? ruleModel.getSmsTemplate() : ""; SendUtil.senderSendMsgNoHandError(smsVo, senderModel, logId, smsTemplate); } 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 5520d250..a9cf8f5a 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 @@ -90,7 +90,7 @@ public class FrontService extends Service { @Override public void run() { int batteryLevel = getBatteryLevel(); - System.out.println("当前剩余电量:" + batteryLevel + "%"); + //System.out.println("当前剩余电量:" + batteryLevel + "%"); int batteryLevelAlarm = SettingUtil.getBatteryLevelAlarm(); if (alarmTimes[0] <= 1 && batteryLevelAlarm > 0 && batteryLevelAlarm <= 100 && (batteryLevel == batteryLevelAlarm || batteryLevel == batteryLevelAlarm - 1)) { try { @@ -100,7 +100,7 @@ public class FrontService extends Service { new Date(), "低电量预警"); Log.d(TAG, "send_msg" + smsVo.toString()); - SendUtil.send_msg(context1, smsVo, 1); + SendUtil.send_msg(context1, smsVo, 1, "app"); } catch (Exception e) { Log.e(TAG, "getLog e:" + e.getMessage()); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java index b2dd9515..da96cdef 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java +++ b/app/src/main/java/com/idormy/sms/forwarder/service/NotifyService.java @@ -9,6 +9,7 @@ import android.util.Log; import androidx.annotation.RequiresApi; import com.idormy.sms.forwarder.notify.NotifyHelper; +import com.idormy.sms.forwarder.utils.SettingUtil; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) public class NotifyService extends NotificationListenerService { @@ -23,6 +24,9 @@ public class NotifyService extends NotificationListenerService { @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onNotificationPosted(StatusBarNotification sbn) { + if (!SettingUtil.getSwitchEnableAppNotify()) { + return; + } if (sbn.getNotification() == null) return; Log.d(TAG, sbn.getPackageName()); NotifyHelper.getInstance().onReceive(sbn); @@ -36,6 +40,9 @@ public class NotifyService extends NotificationListenerService { @Override public void onNotificationRemoved(StatusBarNotification sbn) { Log.d(TAG, sbn.getPackageName()); + if (!SettingUtil.getSwitchEnableAppNotify()) { + return; + } NotifyHelper.getInstance().onRemoved(sbn); } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java b/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java index c6d4fe27..d11862a9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java @@ -16,13 +16,14 @@ import java.util.List; public class DbHelper extends SQLiteOpenHelper { // If you change the database schema, you must increment the database version. public static final String TAG = "DbHelper"; - public static final int DATABASE_VERSION = 5; + public static final int DATABASE_VERSION = 6; public static final String DATABASE_NAME = "sms_forwarder.db"; private static final List SQL_CREATE_ENTRIES = Arrays.asList( "CREATE TABLE " + LogTable.LogEntry.TABLE_NAME + " (" + LogTable.LogEntry._ID + " INTEGER PRIMARY KEY," + + LogTable.LogEntry.COLUMN_NAME_TYPE + " TEXT NOT NULL DEFAULT 'sms'," + LogTable.LogEntry.COLUMN_NAME_FROM + " TEXT," + LogTable.LogEntry.COLUMN_NAME_CONTENT + " TEXT," + LogTable.LogEntry.COLUMN_NAME_SIM_INFO + " TEXT," + @@ -32,6 +33,7 @@ public class DbHelper extends SQLiteOpenHelper { LogTable.LogEntry.COLUMN_NAME_TIME + " TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)" , "CREATE TABLE " + RuleTable.RuleEntry.TABLE_NAME + " (" + RuleTable.RuleEntry._ID + " INTEGER PRIMARY KEY," + + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " TEXT NOT NULL DEFAULT 'sms'," + RuleTable.RuleEntry.COLUMN_NAME_FILED + " TEXT," + RuleTable.RuleEntry.COLUMN_NAME_CHECK + " TEXT," + RuleTable.RuleEntry.COLUMN_NAME_VALUE + " TEXT," + @@ -96,6 +98,12 @@ public class DbHelper extends SQLiteOpenHelper { String sql = "Alter table " + RuleTable.RuleEntry.TABLE_NAME + " add column " + RuleTable.RuleEntry.COLUMN_SMS_TEMPLATE + " TEXT NOT NULL DEFAULT '' "; db.execSQL(sql); } + if (oldVersion < 6) { //增加转发规则与日志的分类 + String sql = "Alter table " + RuleTable.RuleEntry.TABLE_NAME + " add column " + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " TEXT NOT NULL DEFAULT 'sms' "; + db.execSQL(sql); + sql = "Alter table " + LogTable.LogEntry.TABLE_NAME + " add column " + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " TEXT NOT NULL DEFAULT 'sms' "; + db.execSQL(sql); + } } public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java index 6548a78b..7a671876 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/Define.java @@ -7,6 +7,7 @@ public class Define { public static final String SP_MSG_KEY_SWITCH_ADD_EXTRA = "tsms_msg_key_switch_add_extra"; public static final String SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_NAME = "tsms_msg_key_switch_add_extra_device_name"; public static final String SP_MSG_KEY_STRING_ENABLE_PHONE = "tsms_msg_key_switch_enable_phone"; + public static final String SP_MSG_KEY_STRING_ENABLE_APP_NOTIFY = "tsms_msg_key_switch_enable_app_notify"; public static final String SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_MARK = "tsms_msg_key_string_add_extra_device_mark"; public static final String SP_MSG_KEY_STRING_ADD_EXTRA_SIM1 = "tsms_msg_key_string_add_extra_sim1"; public static final String SP_MSG_KEY_STRING_ADD_EXTRA_SIM2 = "tsms_msg_key_string_add_extra_sim2"; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java index d2afd381..f2dd75d1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java @@ -50,6 +50,7 @@ public class LogUtil { // Create a new map of values, where column names are the keys ContentValues values = new ContentValues(); + values.put(LogTable.LogEntry.COLUMN_NAME_TYPE, logModel.getType()); values.put(LogTable.LogEntry.COLUMN_NAME_FROM, logModel.getFrom()); values.put(LogTable.LogEntry.COLUMN_NAME_CONTENT, logModel.getContent()); values.put(LogTable.LogEntry.COLUMN_NAME_SIM_INFO, logModel.getSimInfo()); @@ -101,7 +102,7 @@ public class LogUtil { } - public static List getLog(Long id, String key) { + public static List getLog(Long id, String key, String type) { // Define a projection that specifies which columns from the database // you will actually use after this query. String[] projection = { @@ -130,9 +131,15 @@ public class LogUtil { selectionArgList.add(String.valueOf(id)); } + if (type != null) { + // Define 'where' part of query. + selection += " and " + LogTable.LogEntry.TABLE_NAME + "." + LogTable.LogEntry.COLUMN_NAME_TYPE + " = ? "; + selectionArgList.add(type); + } + if (key != null) { // Define 'where' part of query. - selection = " and (" + LogTable.LogEntry.TABLE_NAME + "." + LogTable.LogEntry.COLUMN_NAME_FROM + " LIKE ? or " + LogTable.LogEntry.TABLE_NAME + "." + LogTable.LogEntry.COLUMN_NAME_CONTENT + " LIKE ? ) "; + selection += " and (" + LogTable.LogEntry.TABLE_NAME + "." + LogTable.LogEntry.COLUMN_NAME_FROM + " LIKE ? or " + LogTable.LogEntry.TABLE_NAME + "." + LogTable.LogEntry.COLUMN_NAME_CONTENT + " LIKE ? ) "; // Specify arguments in placeholder order. selectionArgList.add(key); selectionArgList.add(key); diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java index b767e1c1..4103082c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java @@ -38,6 +38,7 @@ public class RuleUtil { // Create a new map of values, where column names are the keys ContentValues values = new ContentValues(); + values.put(RuleTable.RuleEntry.COLUMN_NAME_TYPE, ruleModel.getType()); values.put(RuleTable.RuleEntry.COLUMN_NAME_FILED, ruleModel.getFiled()); values.put(RuleTable.RuleEntry.COLUMN_NAME_CHECK, ruleModel.getCheck()); values.put(RuleTable.RuleEntry.COLUMN_NAME_VALUE, ruleModel.getValue()); @@ -86,11 +87,12 @@ public class RuleUtil { } - public static List getRule(Long id, String key) { + public static List getRule(Long id, String key, String type) { // Define a projection that specifies which columns from the database // you will actually use after this query. String[] projection = { BaseColumns._ID, + RuleTable.RuleEntry.COLUMN_NAME_TYPE, RuleTable.RuleEntry.COLUMN_NAME_FILED, RuleTable.RuleEntry.COLUMN_NAME_CHECK, RuleTable.RuleEntry.COLUMN_NAME_VALUE, @@ -110,6 +112,11 @@ public class RuleUtil { selectionArgList.add(String.valueOf(id)); } + if (type != null) { + selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " = ? "; + selectionArgList.add(type); + } + if (key != null) { // Define 'where' part of query. if (key.equals("SIM1") || key.equals("SIM2")) { @@ -140,6 +147,8 @@ public class RuleUtil { long itemId = cursor.getLong( cursor.getColumnIndexOrThrow(RuleTable.RuleEntry._ID)); + String itemType = cursor.getString( + cursor.getColumnIndexOrThrow(RuleTable.RuleEntry.COLUMN_NAME_TYPE)); String itemFiled = cursor.getString( cursor.getColumnIndexOrThrow(RuleTable.RuleEntry.COLUMN_NAME_FILED)); String itemCheck = cursor.getString( @@ -158,6 +167,7 @@ public class RuleUtil { Log.d(TAG, "getRule: itemId" + itemId); RuleModel ruleModel = new RuleModel(); ruleModel.setId(itemId); + ruleModel.setType(itemType); ruleModel.setFiled(itemFiled); ruleModel.setCheck(itemCheck); ruleModel.setValue(itemValue); 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 0793f643..ae30e5cd 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 @@ -1,169 +1,179 @@ -package com.idormy.sms.forwarder.utils; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; -import android.util.Log; - -@SuppressWarnings({"SynchronizeOnNonFinalField", "unused"}) -public class SettingUtil { - static Boolean hasInit = false; - private static final String TAG = "SettingUtil"; - private static SharedPreferences sp_setting = null; - @SuppressLint("StaticFieldLeak") - private static Context context = null; - - public static void init(Context context1) { - synchronized (hasInit) { - if (hasInit) return; - hasInit = true; - context = context1; - Log.d(TAG, "init "); - sp_setting = PreferenceManager.getDefaultSharedPreferences(context1); - } - } - - public static void switchAddExtra(Boolean switchAddExtra) { - Log.d(TAG, "switchAddExtra :" + switchAddExtra); - sp_setting.edit() - .putBoolean(Define.SP_MSG_KEY_SWITCH_ADD_EXTRA, switchAddExtra) - .apply(); - } - - public static boolean getSwitchAddExtra() { - return sp_setting.getBoolean(Define.SP_MSG_KEY_SWITCH_ADD_EXTRA, false); - } - - public static void switchAddDeviceName(Boolean switchAddDeviceName) { - Log.d(TAG, "switchAddDeviceName :" + switchAddDeviceName); - sp_setting.edit() - .putBoolean(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_NAME, switchAddDeviceName) - .apply(); - } - - public static boolean getSwitchAddDeviceName() { - return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_NAME, false); - } - - public static void switchEnablePhone(Boolean enable) { - sp_setting.edit() - .putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_PHONE, enable) - .apply(); - } - - public static boolean getSwitchEnablePhone() { - return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ENABLE_PHONE, true); - } - - public static void switchSmsTemplate(Boolean switchSmsTemplate) { - Log.d(TAG, "switchSmsTemplate :" + switchSmsTemplate); - sp_setting.edit() - .putBoolean(Define.SP_MSG_KEY_SWITCH_SMS_TEMPLATE, switchSmsTemplate) - .apply(); - } - - public static boolean getSwitchSmsTemplate() { - return sp_setting.getBoolean(Define.SP_MSG_KEY_SWITCH_SMS_TEMPLATE, false); - } - - public static String getAddExtraDeviceMark() { - String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_MARK, ""); - if (res == null || res.equals("")) { - res = android.os.Build.MODEL; - } - return res; - } - - public static void setAddExtraDeviceMark(String addExtraDeviceMark) { - Log.d(TAG, "addExtraDeviceMark :" + addExtraDeviceMark); - sp_setting.edit() - .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_MARK, addExtraDeviceMark) - .apply(); - } - - public static String getSmsTemplate() { - return sp_setting.getString(Define.SP_MSG_KEY_STRING_SMS_TEMPLATE, "{{来源号码}}\n{{短信内容}}\n{{卡槽信息}}\n{{接收时间}}\n{{设备名称}}"); - } - - public static void setSmsTemplate(String textSmsTemplate) { - Log.d(TAG, "textSmsTemplate :" + textSmsTemplate); - sp_setting.edit() - .putString(Define.SP_MSG_KEY_STRING_SMS_TEMPLATE, textSmsTemplate) - .apply(); - } - - public static String getAddExtraSim1() { - String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM1, ""); - if (res == null || res.equals("")) { - res = SimUtil.getSimInfo(1); - } - return res; - } - - public static void setAddExtraSim1(String sim1) { - Log.d(TAG, "sim1 :" + sim1); - sp_setting.edit() - .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM1, sim1) - .apply(); - } - - public static String getAddExtraSim2() { - String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM2, ""); - if (res == null || res.equals("")) { - res = SimUtil.getSimInfo(2); - } - return res; - } - - public static void setAddExtraSim2(String sim2) { - Log.d(TAG, "sim2 :" + sim2); - sp_setting.edit() - .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM2, sim2) - .apply(); - } - - public static int getBatteryLevelAlarm() { - return sp_setting.getInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, 0); - } - - public static void setBatteryLevelAlarm(int battery_level) { - Log.d(TAG, "battery_level :" + battery_level); - sp_setting.edit() - .putInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, battery_level) - .apply(); - } - - public static boolean saveMsgHistory() { - return !sp_setting.getBoolean("option_save_history_on", false); - } - - //接口请求失败重试 - private static String getRetryDelayTimeKey(int index) { - switch (index) { - case 1: - return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME1; - case 2: - return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME2; - case 3: - return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME3; - case 4: - return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME4; - case 5: - default: - return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME5; - } - } - - public static int getRetryDelayTime(int index) { - String key = getRetryDelayTimeKey(index); - return sp_setting.getInt(key, (int) Math.pow(2, (index - 1))); - } - - public static void setRetryDelayTime(int index, int retry_delay_time) { - String key = getRetryDelayTimeKey(index); - Log.d(TAG, "retry_delay_time_" + index + " :" + retry_delay_time); - sp_setting.edit().putInt(key, retry_delay_time).apply(); - } - -} +package com.idormy.sms.forwarder.utils; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.util.Log; + +@SuppressWarnings({"SynchronizeOnNonFinalField", "unused"}) +public class SettingUtil { + static Boolean hasInit = false; + private static final String TAG = "SettingUtil"; + private static SharedPreferences sp_setting = null; + @SuppressLint("StaticFieldLeak") + private static Context context = null; + + public static void init(Context context1) { + synchronized (hasInit) { + if (hasInit) return; + hasInit = true; + context = context1; + Log.d(TAG, "init "); + sp_setting = PreferenceManager.getDefaultSharedPreferences(context1); + } + } + + public static void switchAddExtra(Boolean switchAddExtra) { + Log.d(TAG, "switchAddExtra :" + switchAddExtra); + sp_setting.edit() + .putBoolean(Define.SP_MSG_KEY_SWITCH_ADD_EXTRA, switchAddExtra) + .apply(); + } + + public static boolean getSwitchAddExtra() { + return sp_setting.getBoolean(Define.SP_MSG_KEY_SWITCH_ADD_EXTRA, false); + } + + public static void switchAddDeviceName(Boolean switchAddDeviceName) { + Log.d(TAG, "switchAddDeviceName :" + switchAddDeviceName); + sp_setting.edit() + .putBoolean(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_NAME, switchAddDeviceName) + .apply(); + } + + public static boolean getSwitchAddDeviceName() { + return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_NAME, false); + } + + public static void switchEnablePhone(Boolean enable) { + sp_setting.edit() + .putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_PHONE, enable) + .apply(); + } + + public static boolean getSwitchEnablePhone() { + return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ENABLE_PHONE, true); + } + + public static void switchEnableAppNotify(Boolean enable) { + sp_setting.edit() + .putBoolean(Define.SP_MSG_KEY_STRING_ENABLE_APP_NOTIFY, enable) + .apply(); + } + + public static boolean getSwitchEnableAppNotify() { + return sp_setting.getBoolean(Define.SP_MSG_KEY_STRING_ENABLE_APP_NOTIFY, true); + } + + public static void switchSmsTemplate(Boolean switchSmsTemplate) { + Log.d(TAG, "switchSmsTemplate :" + switchSmsTemplate); + sp_setting.edit() + .putBoolean(Define.SP_MSG_KEY_SWITCH_SMS_TEMPLATE, switchSmsTemplate) + .apply(); + } + + public static boolean getSwitchSmsTemplate() { + return sp_setting.getBoolean(Define.SP_MSG_KEY_SWITCH_SMS_TEMPLATE, false); + } + + public static String getAddExtraDeviceMark() { + String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_MARK, ""); + if (res == null || res.equals("")) { + res = android.os.Build.MODEL; + } + return res; + } + + public static void setAddExtraDeviceMark(String addExtraDeviceMark) { + Log.d(TAG, "addExtraDeviceMark :" + addExtraDeviceMark); + sp_setting.edit() + .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_DEVICE_MARK, addExtraDeviceMark) + .apply(); + } + + public static String getSmsTemplate() { + return sp_setting.getString(Define.SP_MSG_KEY_STRING_SMS_TEMPLATE, "{{来源号码}}\n{{短信内容}}\n{{卡槽信息}}\n{{接收时间}}\n{{设备名称}}"); + } + + public static void setSmsTemplate(String textSmsTemplate) { + Log.d(TAG, "textSmsTemplate :" + textSmsTemplate); + sp_setting.edit() + .putString(Define.SP_MSG_KEY_STRING_SMS_TEMPLATE, textSmsTemplate) + .apply(); + } + + public static String getAddExtraSim1() { + String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM1, ""); + if (res == null || res.equals("")) { + res = SimUtil.getSimInfo(1); + } + return res; + } + + public static void setAddExtraSim1(String sim1) { + Log.d(TAG, "sim1 :" + sim1); + sp_setting.edit() + .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM1, sim1) + .apply(); + } + + public static String getAddExtraSim2() { + String res = sp_setting.getString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM2, ""); + if (res == null || res.equals("")) { + res = SimUtil.getSimInfo(2); + } + return res; + } + + public static void setAddExtraSim2(String sim2) { + Log.d(TAG, "sim2 :" + sim2); + sp_setting.edit() + .putString(Define.SP_MSG_KEY_STRING_ADD_EXTRA_SIM2, sim2) + .apply(); + } + + public static int getBatteryLevelAlarm() { + return sp_setting.getInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, 0); + } + + public static void setBatteryLevelAlarm(int battery_level) { + Log.d(TAG, "battery_level :" + battery_level); + sp_setting.edit() + .putInt(Define.SP_MSG_KEY_STRING_BATTERY_LEVEL_ALARM, battery_level) + .apply(); + } + + public static boolean saveMsgHistory() { + return !sp_setting.getBoolean("option_save_history_on", false); + } + + //接口请求失败重试 + private static String getRetryDelayTimeKey(int index) { + switch (index) { + case 1: + return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME1; + case 2: + return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME2; + case 3: + return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME3; + case 4: + return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME4; + case 5: + default: + return Define.SP_MSG_KEY_STRING_RETRY_DELAY_TIME5; + } + } + + public static int getRetryDelayTime(int index) { + String key = getRetryDelayTimeKey(index); + return sp_setting.getInt(key, (int) Math.pow(2, (index - 1))); + } + + public static void setRetryDelayTime(int index, int retry_delay_time) { + String key = getRetryDelayTimeKey(index); + Log.d(TAG, "retry_delay_time_" + index + " :" + retry_delay_time); + sp_setting.edit().putInt(key, retry_delay_time).apply(); + } + +} diff --git a/app/src/main/res/drawable/app.xml b/app/src/main/res/drawable/app.xml new file mode 100644 index 00000000..374e8f46 --- /dev/null +++ b/app/src/main/res/drawable/app.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/bg_select_default.xml b/app/src/main/res/drawable/bg_select_default.xml new file mode 100644 index 00000000..9f2f035f --- /dev/null +++ b/app/src/main/res/drawable/bg_select_default.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_select_pressed.xml b/app/src/main/res/drawable/bg_select_pressed.xml new file mode 100644 index 00000000..fab22df1 --- /dev/null +++ b/app/src/main/res/drawable/bg_select_pressed.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_selector.xml b/app/src/main/res/drawable/select_selector.xml new file mode 100644 index 00000000..ab3118f6 --- /dev/null +++ b/app/src/main/res/drawable/select_selector.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sim1.xml b/app/src/main/res/drawable/sim1.xml new file mode 100644 index 00000000..2f8d582c --- /dev/null +++ b/app/src/main/res/drawable/sim1.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/sim2.xml b/app/src/main/res/drawable/sim2.xml new file mode 100644 index 00000000..3a4ba85c --- /dev/null +++ b/app/src/main/res/drawable/sim2.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/txt_select_selector.xml b/app/src/main/res/drawable/txt_select_selector.xml new file mode 100644 index 00000000..a7c25e4a --- /dev/null +++ b/app/src/main/res/drawable/txt_select_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 059f7a07..40275c9a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,72 +1,106 @@ - - - - - - - - - - - -