From 30f9ed71a72dee5546a25375677e9d1fe901f735 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Wed, 6 Apr 2022 16:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=EF=BC=9A=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E7=BB=9F=E4=B8=80=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idormy/sms/forwarder/AboutActivity.java | 6 +- .../idormy/sms/forwarder/MainActivity.java | 16 +- .../idormy/sms/forwarder/RuleActivity.java | 18 +- .../idormy/sms/forwarder/SenderActivity.java | 68 ++-- .../idormy/sms/forwarder/SettingActivity.java | 38 +- .../receiver/PhoneStateReceiver.java | 4 +- .../sms/forwarder/service/FrontService.java | 6 +- .../sms/forwarder/service/NotifyService.java | 4 +- .../{CommonUtil.java => CommonUtils.java} | 378 +++++++++--------- .../sms/forwarder/view/ClearEditText.java | 8 +- 10 files changed, 273 insertions(+), 273 deletions(-) rename app/src/main/java/com/idormy/sms/forwarder/utils/{CommonUtil.java => CommonUtils.java} (97%) diff --git a/app/src/main/java/com/idormy/sms/forwarder/AboutActivity.java b/app/src/main/java/com/idormy/sms/forwarder/AboutActivity.java index 86f1b512..f1af88f8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/AboutActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/AboutActivity.java @@ -13,7 +13,7 @@ import com.hjq.permissions.XXPermissions; import com.hjq.toast.ToastUtils; import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver; import com.idormy.sms.forwarder.utils.CacheUtils; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.SettingUtils; import com.xuexiang.xupdate.easy.EasyUpdate; import com.xuexiang.xupdate.proxy.impl.DefaultUpdateChecker; @@ -65,7 +65,7 @@ public class AboutActivity extends BaseActivity { final TextView version_now = findViewById(R.id.version_now); Button check_version_now = findViewById(R.id.check_version_now); try { - version_now.setText(CommonUtil.getVersionName(AboutActivity.this)); + version_now.setText(CommonUtils.getVersionName(AboutActivity.this)); } catch (Exception e) { e.printStackTrace(); } @@ -73,7 +73,7 @@ public class AboutActivity extends BaseActivity { check_version_now.setOnClickListener(v -> { try { String updateUrl = "https://xupdate.bms.ink/update/checkVersion?appKey=com.idormy.sms.forwarder&versionCode="; - updateUrl += CommonUtil.getVersionCode(AboutActivity.this); + updateUrl += CommonUtils.getVersionCode(AboutActivity.this); Log.d(TAG, updateUrl); EasyUpdate.create(AboutActivity.this, updateUrl) 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 59e2700e..6e11289d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -36,7 +36,7 @@ import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.service.BatteryService; import com.idormy.sms.forwarder.service.FrontService; import com.idormy.sms.forwarder.service.MusicService; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.HttpUtils; import com.idormy.sms.forwarder.utils.KeepAliveUtils; import com.idormy.sms.forwarder.utils.LogUtils; @@ -159,7 +159,7 @@ public class MainActivity extends BaseActivity implements RefreshListView.IRefre //检查权限是否获取 PackageManager pm = getPackageManager(); - CommonUtil.CheckPermission(pm, this); + CommonUtils.CheckPermission(pm, this); XXPermissions.with(this) // 接收短信 .permission(Permission.RECEIVE_SMS) @@ -235,7 +235,7 @@ public class MainActivity extends BaseActivity implements RefreshListView.IRefre //计算浮动按钮位置 FloatingActionButton btnFloat = findViewById(R.id.btnCleanLog); RefreshListView viewList = findViewById(R.id.list_view_log); - CommonUtil.calcMarginBottom(this, btnFloat, viewList, null); + CommonUtils.calcMarginBottom(this, btnFloat, viewList, null); //清空日志 btnFloat.setOnClickListener(v -> { @@ -339,8 +339,8 @@ public class MainActivity extends BaseActivity implements RefreshListView.IRefre } //开启读取通知栏权限 - if (SettingUtils.getSwitchEnableAppNotify() && !CommonUtil.isNotificationListenerServiceEnabled(this)) { - CommonUtil.toggleNotificationListenerService(this); + if (SettingUtils.getSwitchEnableAppNotify() && !CommonUtils.isNotificationListenerServiceEnabled(this)) { + CommonUtils.toggleNotificationListenerService(this); SettingUtils.switchEnableAppNotify(false); ToastUtils.delayedShow(R.string.tips_notification_listener, 3000); return; @@ -390,10 +390,10 @@ public class MainActivity extends BaseActivity implements RefreshListView.IRefre //是否同意隐私协议 if (!MyApplication.allowPrivacyPolicy) return; - if (requestCode == CommonUtil.NOTIFICATION_REQUEST_CODE) { - if (CommonUtil.isNotificationListenerServiceEnabled(this)) { + if (requestCode == CommonUtils.NOTIFICATION_REQUEST_CODE) { + if (CommonUtils.isNotificationListenerServiceEnabled(this)) { ToastUtils.show(R.string.notification_listener_service_enabled); - CommonUtil.toggleNotificationListenerService(this); + CommonUtils.toggleNotificationListenerService(this); } else { ToastUtils.show(R.string.notification_listener_service_disabled); } 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 ffc4e0f3..5e4a3d5e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java @@ -29,7 +29,7 @@ import com.idormy.sms.forwarder.model.SenderModel; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SenderUtil; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.LogUtils; import com.idormy.sms.forwarder.utils.RuleUtils; import com.idormy.sms.forwarder.utils.SettingUtils; @@ -133,7 +133,7 @@ public class RuleActivity extends BaseActivity { //计算浮动按钮位置 FloatingActionButton btnAddRule = findViewById(R.id.btnAddRule); - CommonUtil.calcMarginBottom(this, btnAddRule, listView, null); + CommonUtils.calcMarginBottom(this, btnAddRule, listView, null); //添加规则 btnAddRule.setOnClickListener(v -> setRule(null, false)); @@ -380,49 +380,49 @@ public class RuleActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_from)); }); Button buttonInsertContent = view1.findViewById(R.id.bt_insert_content); buttonInsertContent.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_sms)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_sms)); }); Button buttonInsertSenderApp = view1.findViewById(R.id.bt_insert_sender_app); buttonInsertSenderApp.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_package_name)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_package_name)); }); Button buttonInsertContentApp = view1.findViewById(R.id.bt_insert_content_app); buttonInsertContentApp.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_msg)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_msg)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { textSmsTemplate.setFocusable(true); textSmsTemplate.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_device_name)); }); //正则替换 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 a314d744..967a28b1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -76,7 +76,7 @@ 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.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.LogUtils; import com.idormy.sms.forwarder.utils.RuleUtils; import com.idormy.sms.forwarder.view.ClearEditText; @@ -259,7 +259,7 @@ public class SenderActivity extends BaseActivity { //计算浮动按钮位置 FloatingActionButton btnFloat = findViewById(R.id.btnAddSender); - CommonUtil.calcMarginBottom(this, btnFloat, listView, null); + CommonUtils.calcMarginBottom(this, btnFloat, listView, null); //添加发送通道 btnFloat.setOnClickListener(v -> { @@ -456,7 +456,7 @@ public class SenderActivity extends BaseActivity { ToastUtils.delayedShow(R.string.invalid_name, 3000); return; } - if (CommonUtil.checkUrl(token, true)) { + if (CommonUtils.checkUrl(token, true)) { ToastUtils.delayedShow(R.string.invalid_token, 3000); return; } @@ -494,7 +494,7 @@ public class SenderActivity extends BaseActivity { buttonTest.setOnClickListener(view -> { String token = editTextDingdingToken.getText().trim(); - if (CommonUtil.checkUrl(token, true)) { + if (CommonUtils.checkUrl(token, true)) { ToastUtils.delayedShow(R.string.invalid_token, 3000); return; } @@ -709,28 +709,28 @@ public class SenderActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { editTextEmailTitle.setFocusable(true); editTextEmailTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_from)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { editTextEmailTitle.setFocusable(true); editTextEmailTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { editTextEmailTitle.setFocusable(true); editTextEmailTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { editTextEmailTitle.setFocusable(true); editTextEmailTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(editTextEmailTitle, getString(R.string.tag_device_name)); }); } @@ -794,7 +794,7 @@ public class SenderActivity extends BaseActivity { //推送地址 String barkServer = editTextBarkServer.getText().trim(); - if (!CommonUtil.checkUrl(barkServer, false)) { + if (!CommonUtils.checkUrl(barkServer, false)) { ToastUtils.delayedShow(R.string.invalid_bark_server, 3000); return; } @@ -845,7 +845,7 @@ public class SenderActivity extends BaseActivity { String badge = editTextBarkBadge.getText().toString().trim(); //角标 String url = editTextBarkUrl.getText().toString().trim(); //链接 BarkSettingVo barkSettingVoNew = new BarkSettingVo(barkServer, icon, title, levelId, sound, badge, url); - if (CommonUtil.checkUrl(barkServer, false)) { + if (CommonUtils.checkUrl(barkServer, false)) { try { SmsVo smsVo = new SmsVo(getString(R.string.test_phone_num), getString(R.string.test_sender_sms), new Date(), getString(R.string.test_sim_info)); SenderBarkMsg.sendMsg(0, handler, null, barkSettingVoNew, smsVo.getTitleForSend(title), smsVo.getSmsVoForSend(), getString(R.string.test_group_name)); @@ -863,28 +863,28 @@ public class SenderActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { editTextBarkTitle.setFocusable(true); editTextBarkTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_from)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { editTextBarkTitle.setFocusable(true); editTextBarkTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { editTextBarkTitle.setFocusable(true); editTextBarkTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { editTextBarkTitle.setFocusable(true); editTextBarkTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_device_name)); }); } @@ -1013,7 +1013,7 @@ public class SenderActivity extends BaseActivity { String webParams = editTextWebNotifyWebParams.getText().toString().trim(); Map headers = getHeadersFromHeaderItemMap(headerItemMap); - if (!CommonUtil.checkUrl(webServer, false)) { + if (!CommonUtils.checkUrl(webServer, false)) { ToastUtils.delayedShow(R.string.invalid_webserver, 3000); return; } @@ -1054,7 +1054,7 @@ public class SenderActivity extends BaseActivity { String webParams = editTextWebNotifyWebParams.getText().toString().trim(); Map headers = getHeadersFromHeaderItemMap(headerItemMap); - if (!CommonUtil.checkUrl(webServer, false)) { + if (!CommonUtils.checkUrl(webServer, false)) { ToastUtils.delayedShow(R.string.invalid_webserver, 3000); return; } @@ -1116,7 +1116,7 @@ public class SenderActivity extends BaseActivity { } String webHook = editTextQYWXGroupRobotWebHook.getText().trim(); - if (!CommonUtil.checkUrl(webHook, false)) { + if (!CommonUtils.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; } @@ -1154,7 +1154,7 @@ public class SenderActivity extends BaseActivity { buttonTest.setOnClickListener(view -> { String webHook = editTextQYWXGroupRobotWebHook.getText().trim(); - if (!CommonUtil.checkUrl(webHook, false)) { + if (!CommonUtils.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; } @@ -1812,7 +1812,7 @@ public class SenderActivity extends BaseActivity { String secret = editTextFeishuSecret.getText().trim(); String msgType = radioGroupFeishuMsgType.getCheckedRadioButtonId() == R.id.radioFeishuMsgTypeText ? "text" : "interactive"; String titleTemplate = editTextFeishuTitle.getText().toString().trim(); - if (!CommonUtil.checkUrl(webHook, false)) { + if (!CommonUtils.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; } @@ -1855,7 +1855,7 @@ public class SenderActivity extends BaseActivity { String secret = editTextFeishuSecret.getText().trim(); String msgType = radioGroupFeishuMsgType.getCheckedRadioButtonId() == R.id.radioFeishuMsgTypeText ? "text" : "interactive"; String titleTemplate = editTextFeishuTitle.getText().toString().trim(); - if (!CommonUtil.checkUrl(webHook, false)) { + if (!CommonUtils.checkUrl(webHook, false)) { ToastUtils.delayedShow(R.string.invalid_webhook, 3000); return; } @@ -1873,28 +1873,28 @@ public class SenderActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { editTextFeishuTitle.setFocusable(true); editTextFeishuTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_from)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { editTextFeishuTitle.setFocusable(true); editTextFeishuTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { editTextFeishuTitle.setFocusable(true); editTextFeishuTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { editTextFeishuTitle.setFocusable(true); editTextFeishuTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(editTextFeishuTitle, getString(R.string.tag_device_name)); }); } @@ -2037,28 +2037,28 @@ public class SenderActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { editTextPushPlusTitle.setFocusable(true); editTextPushPlusTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_from)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { editTextPushPlusTitle.setFocusable(true); editTextPushPlusTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { editTextPushPlusTitle.setFocusable(true); editTextPushPlusTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { editTextPushPlusTitle.setFocusable(true); editTextPushPlusTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(editTextPushPlusTitle, getString(R.string.tag_device_name)); }); } @@ -2113,7 +2113,7 @@ public class SenderActivity extends BaseActivity { } String webServer = editTextGotifyWebServer.getText().trim(); - if (!CommonUtil.checkUrl(webServer, false)) { + if (!CommonUtils.checkUrl(webServer, false)) { ToastUtils.delayedShow(R.string.invalid_webserver, 3000); return; } @@ -2157,7 +2157,7 @@ public class SenderActivity extends BaseActivity { buttonTest.setOnClickListener(view -> { String webServer = editTextGotifyWebServer.getText().trim(); - if (!CommonUtil.checkUrl(webServer, false)) { + if (!CommonUtils.checkUrl(webServer, false)) { ToastUtils.delayedShow(R.string.invalid_webserver, 3000); return; } @@ -2183,28 +2183,28 @@ public class SenderActivity extends BaseActivity { buttonInsertSender.setOnClickListener(view -> { editTextGotifyTitle.setFocusable(true); editTextGotifyTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_from)); }); Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra); buttonInsertExtra.setOnClickListener(view -> { editTextGotifyTitle.setFocusable(true); editTextGotifyTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_card_slot)); }); Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time); buttonInsertTime.setOnClickListener(view -> { editTextGotifyTitle.setFocusable(true); editTextGotifyTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_receive_time)); }); Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name); buttonInsertDeviceName.setOnClickListener(view -> { editTextGotifyTitle.setFocusable(true); editTextGotifyTitle.requestFocus(); - CommonUtil.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(editTextGotifyTitle, getString(R.string.tag_device_name)); }); } 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 86bc2e06..b087931d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java @@ -37,7 +37,7 @@ import com.idormy.sms.forwarder.sender.BatteryReportCronTask; import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.service.MusicService; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.DbHelper; import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.HttpUtils; @@ -80,7 +80,7 @@ public class SettingActivity extends BaseActivity { //是否关闭页面提示 ScrollView scrollView = findViewById(R.id.scrollView); - CommonUtil.calcMarginBottom(this, null, null, scrollView); + CommonUtils.calcMarginBottom(this, null, null, scrollView); //转发短信广播 switchEnableSms(findViewById(R.id.switch_enable_sms)); @@ -149,7 +149,7 @@ public class SettingActivity extends BaseActivity { if (isChecked) { //检查权限是否获取 PackageManager pm = getPackageManager(); - CommonUtil.CheckPermission(pm, this); + CommonUtils.CheckPermission(pm, this); XXPermissions.with(this) // 接收短信 .permission(Permission.RECEIVE_SMS) @@ -206,7 +206,7 @@ public class SettingActivity extends BaseActivity { if (isChecked) { //检查权限是否获取 PackageManager pm = getPackageManager(); - CommonUtil.CheckPermission(pm, this); + CommonUtils.CheckPermission(pm, this); XXPermissions.with(this) // 读取电话状态 .permission(Permission.READ_PHONE_STATE) @@ -282,13 +282,13 @@ public class SettingActivity extends BaseActivity { layout_cancel_app_notify.setVisibility(isChecked ? View.VISIBLE : View.GONE); //TODO:校验使用APP通知转发必备的权限 if (isChecked) { - if (!CommonUtil.isNotificationListenerServiceEnabled(this)) { - CommonUtil.openNotificationAccess(this); + if (!CommonUtils.isNotificationListenerServiceEnabled(this)) { + CommonUtils.openNotificationAccess(this); ToastUtils.delayedShow(R.string.tips_notification_listener, 3000); return; } else { ToastUtils.delayedShow(R.string.notification_service_is_on, 3000); - CommonUtil.toggleNotificationListenerService(this); + CommonUtils.toggleNotificationListenerService(this); } } SettingUtils.switchEnableAppNotify(isChecked); @@ -318,21 +318,21 @@ public class SettingActivity extends BaseActivity { //请求通知使用权限 public void requestNotificationPermission(View view) { - if (!CommonUtil.isNotificationListenerServiceEnabled(this)) { - CommonUtil.openNotificationAccess(this); + if (!CommonUtils.isNotificationListenerServiceEnabled(this)) { + CommonUtils.openNotificationAccess(this); } else { ToastUtils.show(R.string.notification_listener_service_enabled); - CommonUtil.toggleNotificationListenerService(this); + CommonUtils.toggleNotificationListenerService(this); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == CommonUtil.NOTIFICATION_REQUEST_CODE) { - if (CommonUtil.isNotificationListenerServiceEnabled(this)) { + if (requestCode == CommonUtils.NOTIFICATION_REQUEST_CODE) { + if (CommonUtils.isNotificationListenerServiceEnabled(this)) { ToastUtils.show(R.string.notification_listener_service_enabled); - CommonUtil.toggleNotificationListenerService(this); + CommonUtils.toggleNotificationListenerService(this); SettingUtils.switchEnableAppNotify(true); } else { ToastUtils.show(R.string.notification_listener_service_disabled); @@ -927,19 +927,19 @@ public class SettingActivity extends BaseActivity { textSmsTemplate.requestFocus(); switch (v.getId()) { case R.id.bt_insert_sender: - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_from)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_from)); return; case R.id.bt_insert_content: - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_sms)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_sms)); return; case R.id.bt_insert_extra: - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_card_slot)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_card_slot)); return; case R.id.bt_insert_time: - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_receive_time)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_receive_time)); return; case R.id.bt_insert_device_name: - CommonUtil.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_device_name)); + CommonUtils.insertOrReplaceText2Cursor(textSmsTemplate, getString(R.string.tag_device_name)); return; default: } @@ -957,7 +957,7 @@ public class SettingActivity extends BaseActivity { StepBar stepBar = findViewById(R.id.stepBar); stepBar.setHighlight(); - CommonUtil.calcMarginBottom(this, null, null, findViewById(R.id.scrollView)); + CommonUtils.calcMarginBottom(this, null, null, findViewById(R.id.scrollView)); }); } 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 4f4e40b1..e936d140 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 @@ -12,7 +12,7 @@ import com.idormy.sms.forwarder.model.CallInfo; import com.idormy.sms.forwarder.model.PhoneBookEntity; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.ContactHelper; import com.idormy.sms.forwarder.utils.PhoneUtils; import com.idormy.sms.forwarder.utils.SettingUtils; @@ -117,7 +117,7 @@ public class PhoneStateReceiver extends BroadcastReceiver { //TODO:同一卡槽同一秒的重复未接来电广播不再重复处理(部分机型会收到两条广播?) String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINESE).format(new Date()); String prevHash = SettingUtils.getPrevNoticeHash(phoneNumber); - String currHash = CommonUtil.MD5(phoneNumber + simInfo + time); + String currHash = CommonUtils.MD5(phoneNumber + simInfo + time); Log.d(TAG, "prevHash=" + prevHash + " currHash=" + currHash); if (prevHash != null && prevHash.equals(currHash)) { Log.w(TAG, "Repeated missed call broadcasts of the same card slot in the same second are no longer processed repeatedly (some models will receive two broadcasts)"); 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 f5163107..3f2b3508 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 @@ -22,7 +22,7 @@ import com.idormy.sms.forwarder.MyApplication; import com.idormy.sms.forwarder.R; import com.idormy.sms.forwarder.database.AppDatabase; import com.idormy.sms.forwarder.database.Config; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.OSUtils; import com.idormy.sms.forwarder.utils.PhoneUtils; @@ -110,8 +110,8 @@ public class FrontService extends Service { } //开关通知监听服务 - if (SettingUtils.getSwitchEnableAppNotify() && CommonUtil.isNotificationListenerServiceEnabled(this)) { - CommonUtil.toggleNotificationListenerService(this); + if (SettingUtils.getSwitchEnableAppNotify() && CommonUtils.isNotificationListenerServiceEnabled(this)) { + CommonUtils.toggleNotificationListenerService(this); } //Frc内网穿透 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 894bf823..0d505e80 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 @@ -11,7 +11,7 @@ import androidx.annotation.RequiresApi; import com.idormy.sms.forwarder.MyApplication; import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; import com.idormy.sms.forwarder.utils.SettingUtils; import java.text.SimpleDateFormat; @@ -81,7 +81,7 @@ public class NotifyService extends NotificationListenerService { //重复通知不再处理 String prevHash = SettingUtils.getPrevNoticeHash(packageName); - String currHash = CommonUtil.MD5(packageName + title + text + time); + String currHash = CommonUtils.MD5(packageName + title + text + time); Log.d(TAG, "prevHash=" + prevHash + " currHash=" + currHash); if (prevHash != null && prevHash.equals(currHash)) { Log.w(TAG, "重复通知不再处理"); diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.java similarity index 97% rename from app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtil.java rename to app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.java index 104e8a61..4f1a69ee 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/CommonUtils.java @@ -1,189 +1,189 @@ -package com.idormy.sms.forwarder.utils; - -import android.Manifest; -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.text.TextUtils; -import android.widget.EditText; -import android.widget.ListView; -import android.widget.RelativeLayout; -import android.widget.ScrollView; - -import androidx.core.app.ActivityCompat; -import androidx.core.app.NotificationManagerCompat; - -import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.idormy.sms.forwarder.MyApplication; -import com.idormy.sms.forwarder.service.NotifyService; - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * 常用工具类 - */ -public class CommonUtil { - public static final int NOTIFICATION_REQUEST_CODE = 9527; - private static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"; - - //是否启用通知监听服务 - public static boolean isNotificationListenerServiceEnabled(Context context) { - Set packageNames = NotificationManagerCompat.getEnabledListenerPackages(context); - return packageNames.contains(context.getPackageName()); - } - - //开关通知监听服务 - public static void toggleNotificationListenerService(Context context) { - PackageManager pm = context.getPackageManager(); - pm.setComponentEnabledSetting(new ComponentName(context.getApplicationContext(), NotifyService.class), - PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); - - pm.setComponentEnabledSetting(new ComponentName(context.getApplicationContext(), NotifyService.class), - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); - } - - //跳转通知使用权设置界面 - public static void openNotificationAccess(Activity activity) { - Intent intent = new Intent(ACTION_NOTIFICATION_LISTENER_SETTINGS); - activity.startActivityForResult(intent, NOTIFICATION_REQUEST_CODE); - } - - //获取当前版本名称 - public static String getVersionName(Context context) throws Exception { - // 获取PackageManager的实例 - PackageManager packageManager = context.getPackageManager(); - // getPackageName()是你当前类的包名,0代表是获取版本信息 - PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); - return packInfo.versionName; - } - - //获取当前版本号 - public static Integer getVersionCode(Context context) throws Exception { - // 获取PackageManager的实例 - PackageManager packageManager = context.getPackageManager(); - // getPackageName()是你当前类的包名,0代表是获取版本信息 - PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); - return packInfo.versionCode; - } - - // 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示) - @SuppressLint("InlinedApi") - public static void CheckPermission(PackageManager pm, Context that) { - //PackageManager pm = getPackageManager(); - boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", that.getPackageName())); - boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", that.getPackageName())); - boolean permission_foreground_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.FOREGROUND_SERVICE", that.getPackageName())); - boolean permission_read_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", that.getPackageName())); - boolean permission_write_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", that.getPackageName())); - boolean permission_receive_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_SMS", that.getPackageName())); - boolean permission_read_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", that.getPackageName())); - boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_SMS", that.getPackageName())); - boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", that.getPackageName())); - boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", that.getPackageName())); - boolean permission_read_call_log = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CALL_LOG", that.getPackageName())); - boolean permission_read_contacts = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CONTACTS", that.getPackageName())); - boolean permission_battery_stats = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BATTERY_STATS", that.getPackageName())); - boolean permission_bind_notification_listener_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", that.getPackageName())); - boolean permission_query_all_packages = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.QUERY_ALL_PACKAGES", that.getPackageName())); - - if (!(permission_internet && permission_receive_boot && permission_foreground_service && - permission_read_external_storage && permission_write_external_storage && - permission_receive_sms && permission_read_sms && permission_send_sms && - permission_read_call_log && permission_read_contacts && - permission_read_phone_state && permission_read_phone_numbers && permission_battery_stats && - permission_bind_notification_listener_service && permission_query_all_packages)) { - ActivityCompat.requestPermissions((Activity) that, new String[]{ - Manifest.permission.INTERNET, - Manifest.permission.RECEIVE_BOOT_COMPLETED, - Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.RECEIVE_SMS, - Manifest.permission.READ_SMS, - Manifest.permission.SEND_SMS, - Manifest.permission.READ_PHONE_STATE, - Manifest.permission.READ_CALL_LOG, - Manifest.permission.READ_CONTACTS, - Manifest.permission.READ_PHONE_NUMBERS, - Manifest.permission.FOREGROUND_SERVICE, - Manifest.permission.BATTERY_STATS, - Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE, - Manifest.permission.QUERY_ALL_PACKAGES, - }, 0x01); - } - } - - //计算MD5 - public static String MD5(String input) { - if (input == null || input.length() == 0) return null; - - try { - MessageDigest md5 = MessageDigest.getInstance("MD5"); - md5.update(input.getBytes()); - byte[] byteArray = md5.digest(); - StringBuilder sb = new StringBuilder(); - for (byte b : byteArray) { - // 一个byte格式化成两位的16进制,不足两位高位补零 - sb.append(String.format("%02x", b)); - } - return sb.toString().toUpperCase(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - - return null; - } - - //屏幕像素转换 - public static int dp2px(Context context, float dipValue) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dipValue * scale + 0.5f); - } - - //是否合法的url - public static boolean checkUrl(String urls, boolean emptyResult) { - if (TextUtils.isEmpty(urls)) return emptyResult; - - String regex = "(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\&%\\+\\$#_=]*)?"; - Pattern pat = Pattern.compile(regex); - Matcher mat = pat.matcher(urls.trim()); - return mat.matches(); - } - - //焦点位置插入文本 - public static void insertOrReplaceText2Cursor(EditText editText, String str) { - int start = Math.max(editText.getSelectionStart(), 0); - int end = Math.max(editText.getSelectionEnd(), 0); - editText.getText().replace(Math.min(start, end), Math.max(start, end), str, 0, str.length()); - } - - //计算浮动按钮位置 - public static void calcMarginBottom(Context context, FloatingActionButton btnFloat, ListView viewList, ScrollView scrollView) { - - int marginBottom = MyApplication.showHelpTip ? 85 : 65; - if (btnFloat != null) { - RelativeLayout.LayoutParams btnLayoutParams = (RelativeLayout.LayoutParams) btnFloat.getLayoutParams(); - btnLayoutParams.bottomMargin = dp2px(context, marginBottom + 10); - btnFloat.setLayoutParams(btnLayoutParams); - } - - if (viewList != null) { - RelativeLayout.LayoutParams listLayoutParams = (RelativeLayout.LayoutParams) viewList.getLayoutParams(); - listLayoutParams.bottomMargin = dp2px(context, marginBottom); - viewList.setLayoutParams(listLayoutParams); - } - - if (scrollView != null) { - RelativeLayout.LayoutParams listLayoutParams = (RelativeLayout.LayoutParams) scrollView.getLayoutParams(); - listLayoutParams.bottomMargin = dp2px(context, marginBottom); - scrollView.setLayoutParams(listLayoutParams); - } - } -} +package com.idormy.sms.forwarder.utils; + +import android.Manifest; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.text.TextUtils; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.RelativeLayout; +import android.widget.ScrollView; + +import androidx.core.app.ActivityCompat; +import androidx.core.app.NotificationManagerCompat; + +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.idormy.sms.forwarder.MyApplication; +import com.idormy.sms.forwarder.service.NotifyService; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 常用工具类 + */ +public class CommonUtils { + public static final int NOTIFICATION_REQUEST_CODE = 9527; + private static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"; + + //是否启用通知监听服务 + public static boolean isNotificationListenerServiceEnabled(Context context) { + Set packageNames = NotificationManagerCompat.getEnabledListenerPackages(context); + return packageNames.contains(context.getPackageName()); + } + + //开关通知监听服务 + public static void toggleNotificationListenerService(Context context) { + PackageManager pm = context.getPackageManager(); + pm.setComponentEnabledSetting(new ComponentName(context.getApplicationContext(), NotifyService.class), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + + pm.setComponentEnabledSetting(new ComponentName(context.getApplicationContext(), NotifyService.class), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); + } + + //跳转通知使用权设置界面 + public static void openNotificationAccess(Activity activity) { + Intent intent = new Intent(ACTION_NOTIFICATION_LISTENER_SETTINGS); + activity.startActivityForResult(intent, NOTIFICATION_REQUEST_CODE); + } + + //获取当前版本名称 + public static String getVersionName(Context context) throws Exception { + // 获取PackageManager的实例 + PackageManager packageManager = context.getPackageManager(); + // getPackageName()是你当前类的包名,0代表是获取版本信息 + PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); + return packInfo.versionName; + } + + //获取当前版本号 + public static Integer getVersionCode(Context context) throws Exception { + // 获取PackageManager的实例 + PackageManager packageManager = context.getPackageManager(); + // getPackageName()是你当前类的包名,0代表是获取版本信息 + PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0); + return packInfo.versionCode; + } + + // 检查权限是否获取(android6.0及以上系统可能默认关闭权限,且没提示) + @SuppressLint("InlinedApi") + public static void CheckPermission(PackageManager pm, Context that) { + //PackageManager pm = getPackageManager(); + boolean permission_internet = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.INTERNET", that.getPackageName())); + boolean permission_receive_boot = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_BOOT_COMPLETED", that.getPackageName())); + boolean permission_foreground_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.FOREGROUND_SERVICE", that.getPackageName())); + boolean permission_read_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_EXTERNAL_STORAGE", that.getPackageName())); + boolean permission_write_external_storage = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.WRITE_EXTERNAL_STORAGE", that.getPackageName())); + boolean permission_receive_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECEIVE_SMS", that.getPackageName())); + boolean permission_read_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_SMS", that.getPackageName())); + boolean permission_send_sms = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.SEND_SMS", that.getPackageName())); + boolean permission_read_phone_state = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_STATE", that.getPackageName())); + boolean permission_read_phone_numbers = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_PHONE_NUMBERS", that.getPackageName())); + boolean permission_read_call_log = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CALL_LOG", that.getPackageName())); + boolean permission_read_contacts = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.READ_CONTACTS", that.getPackageName())); + boolean permission_battery_stats = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BATTERY_STATS", that.getPackageName())); + boolean permission_bind_notification_listener_service = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", that.getPackageName())); + boolean permission_query_all_packages = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.QUERY_ALL_PACKAGES", that.getPackageName())); + + if (!(permission_internet && permission_receive_boot && permission_foreground_service && + permission_read_external_storage && permission_write_external_storage && + permission_receive_sms && permission_read_sms && permission_send_sms && + permission_read_call_log && permission_read_contacts && + permission_read_phone_state && permission_read_phone_numbers && permission_battery_stats && + permission_bind_notification_listener_service && permission_query_all_packages)) { + ActivityCompat.requestPermissions((Activity) that, new String[]{ + Manifest.permission.INTERNET, + Manifest.permission.RECEIVE_BOOT_COMPLETED, + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.RECEIVE_SMS, + Manifest.permission.READ_SMS, + Manifest.permission.SEND_SMS, + Manifest.permission.READ_PHONE_STATE, + Manifest.permission.READ_CALL_LOG, + Manifest.permission.READ_CONTACTS, + Manifest.permission.READ_PHONE_NUMBERS, + Manifest.permission.FOREGROUND_SERVICE, + Manifest.permission.BATTERY_STATS, + Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE, + Manifest.permission.QUERY_ALL_PACKAGES, + }, 0x01); + } + } + + //计算MD5 + public static String MD5(String input) { + if (input == null || input.length() == 0) return null; + + try { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + md5.update(input.getBytes()); + byte[] byteArray = md5.digest(); + StringBuilder sb = new StringBuilder(); + for (byte b : byteArray) { + // 一个byte格式化成两位的16进制,不足两位高位补零 + sb.append(String.format("%02x", b)); + } + return sb.toString().toUpperCase(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + return null; + } + + //屏幕像素转换 + public static int dp2px(Context context, float dipValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dipValue * scale + 0.5f); + } + + //是否合法的url + public static boolean checkUrl(String urls, boolean emptyResult) { + if (TextUtils.isEmpty(urls)) return emptyResult; + + String regex = "(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\'\\/\\\\&%\\+\\$#_=]*)?"; + Pattern pat = Pattern.compile(regex); + Matcher mat = pat.matcher(urls.trim()); + return mat.matches(); + } + + //焦点位置插入文本 + public static void insertOrReplaceText2Cursor(EditText editText, String str) { + int start = Math.max(editText.getSelectionStart(), 0); + int end = Math.max(editText.getSelectionEnd(), 0); + editText.getText().replace(Math.min(start, end), Math.max(start, end), str, 0, str.length()); + } + + //计算浮动按钮位置 + public static void calcMarginBottom(Context context, FloatingActionButton btnFloat, ListView viewList, ScrollView scrollView) { + + int marginBottom = MyApplication.showHelpTip ? 85 : 65; + if (btnFloat != null) { + RelativeLayout.LayoutParams btnLayoutParams = (RelativeLayout.LayoutParams) btnFloat.getLayoutParams(); + btnLayoutParams.bottomMargin = dp2px(context, marginBottom + 10); + btnFloat.setLayoutParams(btnLayoutParams); + } + + if (viewList != null) { + RelativeLayout.LayoutParams listLayoutParams = (RelativeLayout.LayoutParams) viewList.getLayoutParams(); + listLayoutParams.bottomMargin = dp2px(context, marginBottom); + viewList.setLayoutParams(listLayoutParams); + } + + if (scrollView != null) { + RelativeLayout.LayoutParams listLayoutParams = (RelativeLayout.LayoutParams) scrollView.getLayoutParams(); + listLayoutParams.bottomMargin = dp2px(context, marginBottom); + scrollView.setLayoutParams(listLayoutParams); + } + } +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/view/ClearEditText.java b/app/src/main/java/com/idormy/sms/forwarder/view/ClearEditText.java index c292b476..c3f71497 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/view/ClearEditText.java +++ b/app/src/main/java/com/idormy/sms/forwarder/view/ClearEditText.java @@ -21,7 +21,7 @@ import androidx.viewpager.widget.ViewPager; import com.idormy.sms.forwarder.R; import com.idormy.sms.forwarder.utils.AnimationUtils; -import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.CommonUtils; public class ClearEditText extends RelativeLayout { private EditText myEdie; @@ -120,7 +120,7 @@ public class ClearEditText extends RelativeLayout { int left = myEdie.getPaddingLeft(); int top = myEdie.getPaddingTop(); int bottom = myEdie.getPaddingBottom(); - myEdie.setPadding(left, top, CommonUtil.dp2px(mContext, 90), bottom); + myEdie.setPadding(left, top, CommonUtils.dp2px(mContext, 90), bottom); } else if (!showClean && !showEye) { int left = myEdie.getPaddingLeft(); int top = myEdie.getPaddingTop(); @@ -131,7 +131,7 @@ public class ClearEditText extends RelativeLayout { int left = myEdie.getPaddingLeft(); int top = myEdie.getPaddingTop(); int bottom = myEdie.getPaddingBottom(); - myEdie.setPadding(left, top, CommonUtil.dp2px(mContext, 45), bottom); + myEdie.setPadding(left, top, CommonUtils.dp2px(mContext, 45), bottom); } myEdie.addTextChangedListener(new TextWatcher() { @@ -268,7 +268,7 @@ public class ClearEditText extends RelativeLayout { if (showEye) { //关闭按钮的宽度 int ivWidth = 35; - ObjectAnimator.ofFloat(ivEditEye, "translationX", -CommonUtil.dp2px(mContext, ivWidth)).setDuration(500).start(); + ObjectAnimator.ofFloat(ivEditEye, "translationX", -CommonUtils.dp2px(mContext, ivWidth)).setDuration(500).start(); } }