Update of translation. Todo: multiple rules.

Update of README (both Chinese and English).

Minor changes of Eng strings; new Eng ver of README, and test of URL.

Update README.md

test of URL
This commit is contained in:
malsony 2021-12-20 11:43:07 +08:00
parent f6fdbc741e
commit e27f57a047
3 changed files with 340 additions and 55 deletions

155
README.md
View File

@ -1,6 +1,7 @@
![SmsForwarder](pic/SmsForwarder.png) ![SmsForwarder](pic/SmsForwarder.png)
# SmsForwarder (短信转发器) # SmsForwarder-短信转发器
[English Version](#SmsForwarder)
[![GitHub release](https://img.shields.io/github/release/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder/releases) [![GitHub stars](https://img.shields.io/github/stars/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/network/members) [![GitHub issues](https://img.shields.io/github/issues/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/issues) [![GitHub license](https://img.shields.io/github/license/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/blob/main/LICENSE) [![GitHub release](https://img.shields.io/github/release/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder/releases) [![GitHub stars](https://img.shields.io/github/stars/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/network/members) [![GitHub issues](https://img.shields.io/github/issues/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/issues) [![GitHub license](https://img.shields.io/github/license/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/blob/main/LICENSE)
@ -28,7 +29,7 @@
* 本仓库发布的`SmsForwarder`项目中涉及的任何代码/APK仅用于测试和学习研究禁止用于商业用途不能保证其合法性准确性完整性和有效性请根据情况自行判断。 * 本仓库发布的`SmsForwarder`项目中涉及的任何代码/APK仅用于测试和学习研究禁止用于商业用途不能保证其合法性准确性完整性和有效性请根据情况自行判断。
* 间接使用代码/APK的任何用户包括但不限于在某些行为违反国家/地区法律或相关法规的情况下进行传播, `pppscn` 对于由此引起的任何隐私泄漏或其他后果概不负责。 * 任何用户直接或间接使用或传播`SmsForwarder`的任何代码或APK无论该等使用是否符合其所在国家或地区或该等使用或传播发生的国家或地区的法律`pppscn`和/或代码仓库的任何其他贡献者均不对该等行为产生的任何后果(包括但不限于隐私泄露)负责。
* 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利则应及时通知并提供身份证明所有权证明我们将在收到认证文件后删除相关代码/APK。 * 如果任何单位或个人认为该项目的代码/APK可能涉嫌侵犯其权利则应及时通知并提供身份证明所有权证明我们将在收到认证文件后删除相关代码/APK。
@ -38,11 +39,11 @@
## 特点和准则: ## 特点和准则:
* **简单** 只做两件事:监听手机短信/来电/APP通知 --> 根据指定规则转发 **简单** 只做两件事:监听手机短信/来电/APP通知 --> 根据指定规则转发
由此带来的好处: 由此带来的好处:
* 简洁:当时用Pad的时候看手机验证码各种不方便网上搜了好久也有解决方案 * 简洁:当时用Pad的时候看手机验证码各种不方便网上搜了好久也理想的解决方案)
> + AirDroid:手机管理工具功能太多,看着都耗电,权限太多,数据经过三方,账号分级 > + AirDroid:手机管理工具功能太多,看着都耗电,权限太多,数据经过三方,账号分级
> + IFTTT:功能太多,看着耗电,权限太多,数据经过三方,收费 > + IFTTT:功能太多,看着耗电,权限太多,数据经过三方,收费
> + 还有一些其他的APP(例如Tasker)也是这些毛病 > + 还有一些其他的APP(例如Tasker)也是这些毛病
@ -135,4 +136,148 @@
## LICENSE ## LICENSE
BSD BSD
--------
![SmsForwarder](pic/SmsForwarder.png)
# SmsForwarder
[中文版](#SmsForwarder-短信转发器)
[![GitHub release](https://img.shields.io/github/release/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder/releases) [![GitHub stars](https://img.shields.io/github/stars/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/network/members) [![GitHub issues](https://img.shields.io/github/issues/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/issues) [![GitHub license](https://img.shields.io/github/license/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/blob/main/LICENSE)
SmsForwarder - listens to SMS, incoming calls, and App notifications on Android mobile devices, and forward according to user defined rules to another App/device, including DingTalk, WeCom and WeCom Group Bot, Feishi Bot, E-mail, Bark, Webhook, Telegram Bot, ServerChan, PushPlus, SMS, etc.
### Download
> ⚠ Repo address: https://github.com/pppscn/SmsForwarder/releases
> ⚠ Repo mirror in China: https://gitee.com/pp/SmsForwarder/releases
> ⚠ Internet storage: https://wws.lanzoui.com/b025yl86h, access password: `pppscn`
> ⚠ CoolAPK.com: https://www.coolapk.com/apk/com.idormy.sms.forwarder
### Manual
> ⚠ GitHub: https://github.com/pppscn/SmsForwarder/wiki
> ⚠ Gitee: https://gitee.com/pp/SmsForwarder/wikis/pages
--------
## NOTE
* Any code/APK of `SmsForwarder` related to the this repository is for test, study, and research only, commercial use is **prohibited**. Legality, accuracy, completeness and validity of any code/APK of this repo is guaranteed by **NOBODY**, and shall only be determined by User.
* `pppscn` and/or any other Contributor to this repo is **NOT** responsible for any consequences (including but not limited to privacy leakage) arising from any user's direct or indirect use or dissemination of any code or APK of `SmsForwarder`, regardless of whether such use is in accordance with the laws of the country or territory where such user locates or such use or dissemination occurs.
* Should any entity finds the code/APK of this repo infringing their rights, please provide notice and identity and proprietorship document, and we will delete relating code/APK after examining such document.
* Privacy: `SmsForwarder` collects absolutely **NO** any of your personal data!! Except 1) version information to umeng.com for stats as the App starts, and 2) version number when manually check for update, `SmsForwarder` is **NOT** sending any data without users' knowledge.
--------
## Features and standards
**Simplicity** - `SmsForwarder` does two things only: Listen to "SMS service/Incoming calls/App notifications", and forward according to rules specified by user.
Benefit by simplicity:
* **E**fficient: (It's inconvenient to read the security codes such as OTP on a mobile phone, when you are using another device; and no solution satisfices our needs)
> + AirDroid: Too many functionalities, power consuming, requiring to many permissions, data relayed by a 3rd party, paid premium service...
> + IFTTT: Too many functionalities, power consuming, requiring to many permissions, data relayed by a 3rd party, paid premium service...
> + And other Apps (e.g. Tasker) with similar features.
* **E**nergy friendly: listens to broadcast only when running, and forwards message only when texts are received and logs recent forwarding contents and status.
* **E**ndurance: "Simplicity is the Ultimate Sophistication." The simpler the code is, the less it errs or crashes; that is what make the app runs longer.
### Workflow:
![工作流程](pic/working_principle.png "工作流程")
### Features:
- [x] Listen to SMS service, and forward according to user-defined rules (SMS contents to destination);
- [x] Forward to DingTalk Bot (to a group chat and @SOMBODY);
- [x] Forward to E-mail (SMTP with SSL encryption);
- [x] Forward to Bark;
- [x] Forward to webhook (a single web page [sending POST/GET requests to a designated URL](doc/POST_WEB.md));
- [x] Forward to WeCom Bots;
- [x] Forward to WeCom enterprise channels;
- [x] Forward to ServerChan·Turbo;
- [x] Forward to Telegram Bots (Proxy support ready);
- [x] Forward to another mobile phone via SMS [Note: Paid service, carriers may charge for SMS forwarding. SMS forwarding should apply with filtered rules when device has no Internet access.]
- [x] Check for new version and upgrade;
- [x] Cache purge;
- [x] Compatible with Android 5.xx, 6.xx, 7.xx, 8.xx, 9.xx, and 10.xx;
- [x] Support for dual SIM slots smartphones and label different slots/carrier/phone number (if available);
- [x] Support for multi-level rules;
- [x] Support for customized labeling of SIM slots and device, and customized forwarding templates;
- [x] Support for rules with regular expression
- [x] Support for rules for different SIM slots;
- [x] Forward missed call information (forwarded by SIM1 slot by default);
- [x] Retry 5 times after a failed request (customized interval time, stop retrying once successfully request);
- [x] Forward to FeiShu Bot;
- [x] Customized scheme (forwarder://main) wake up other Apps;
- [x] Monitor of battery status changes;
- [x] I18n support (Chinese and English currently);
- [x] Support for setting import and export functions (One-key cloning);
- [x] Listen to notifications of other Apps and forward;
- [x] Forward to PushPlus;
- [x] Support for customized template of forwarding rules (default template overrides if left blank);
- [x] Support for variables in regular expression of forwarding rules;
--------
### Screenshot:
| Docking in Ntf. screen | Main screen | Forward rules | Forward detail |
| ---- | ---- | ---- | ---- |
| ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.png "应用主界面") | ![转发规则](pic/rule.jpg "转发规则") | ![转发详情](pic/maindetail.jpg "转发详情") |
| Test of Fw. rule(s) | Multiple rules | Supported senders | Add/Edit DingTalk sender |
| ![添加/编辑转发规则](pic/ruleset.png "添加/编辑转发规则") | ![多重匹配规则](pic/multimatch.png "多重匹配规则") | ![发送通道](pic/sender.jpg "发送通道") | ![添加/编辑发送通道钉钉](pic/sendersetdingding.jpg "添加/编辑发送通道钉钉") |
| Add/Edit E-mail sender | Add/Edit Bark sender | Add/Edit Webhook | Add/Edit WeCom Bot sender |
| ![添加/编辑发送通道邮箱](pic/sendersetemail.jpg "添加/编辑发送通道邮箱") | ![添加/编辑发送通道Bark](pic/sendersetbark.png "添加/编辑发送通道Bark") | ![添加/编辑发送通道网页通知](pic/sendersetwebnotify.jpg "添加/编辑发送通道网页通知") | ![添加/编辑发送通道企业微信群机器人](pic/sendersetqywechat.jpg "添加/编辑发送通道企业微信群机器人") |
| Add/Edit Telegram Bot sender | Add/Edit ServerChan Turbo sender | Add/Edit WeCom Group sender | Settings |
| ![添加/编辑发送通道Telegram机器人](pic/sendertelegram.jpg "添加/编辑发送通道Telegram机器人") | ![添加/编辑发送通道Server酱·Turbo版](pic/senderserverchan.jpg "添加/编辑发送通道Server酱·Turbo版") | ![添加/编辑发送通道企业微信应用](pic/sendersetqywxapp.jpg "添加/编辑发送通道企业微信应用") | ![应用设置](pic/setting.jpg "应用设置") |
| About/Update | RegEx & specific SIM slot | SMS Fw. template w/ SIM slot info. | Add/Edit an SMS forwarding rule |
| ![在线升级](pic/update.jpg "在线升级") | ![支持正则匹配规则 & 支持卡槽匹配规则](pic/regex.jpg "支持正则匹配规则 & 支持卡槽匹配规则") | ![转发短信模板增加卡槽标识](pic/siminfo.jpg "转发短信模板增加卡槽标识") | ![添加/编辑发送通道其他手机短信](pic/sendersetsms.jpg "添加/编辑发送通道其他手机短信") |
| Add/Edit FeiShu Bot sender | Import and export (one-key cloning) | Listen to ntf. of other Apps and fw. | Get App pkg name(s) |
| ![添加/编辑发送通道飞书](pic/senderfeishu.png "添加/编辑发送通道飞书") | ![增加配置导出导入功能(一键克隆)](pic/clone.png "增加配置导出导入功能(一键克隆)") | ![监听其他APP通知信息并转发](pic/app_notify.png "监听其他APP通知信息并转发") | ![获取所有应用列表方便复制APP包名](pic/app_list.png "获取所有应用列表方便复制APP包名") |
--------
## Feedback and suggestions:
+ Submit an issue or Pull Request.
+ Join group chat (only Chinese groups/channels available currently)
| DingTalk | QQ user group #1: 562854376 | QQ user group #2: 31330492 | WeCom |
| ---- | ---- | ---- | ---- |
| ![钉钉客户群](pic/dingtalk.png "钉钉客户群") | ![QQ交流群562854376](pic/qqgroup_1.jpg "QQ交流群562854376") | ![QQ交流群31330492](pic/qqgroup_2.jpg "QQ交流群31330492") | ![企业微信群](pic/qywechat.png "企业微信群") |
## Acknowledgements
> Thanks to the projects below, `SmsForwarder` won't exists without them!
+ https://github.com/xiaoyuanhost/TranspondSms (Foundation of `SmsForwarder`)
+ https://github.com/square/okhttp (http communications)
+ https://github.com/xuexiangjys/XUpdateAPI (online update)
+ https://github.com/mailhu/emailkit (email sending)
+ https://github.com/alibaba/fastjson (json parsing)
+ [![GitHub license](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg?_ga=2.126618957.1361252949.1638261367-1417196221.1635638144&_gl=1*1pfl3dq*_ga*MTQxNzE5NjIyMS4xNjM1NjM4MTQ0*_ga_V0XZL7QHEB*MTYzODMzMjA4OC43LjAuMTYzODMzMjA5Ny4w)](https://jb.gg/OpenSourceSupport) (License Certificate for JetBrains All Products Pack)
--------
## Star this repo if you find this application useful!
[![starcharts stargazers over time](https://starchart.cc/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder)
--------
## LICENSE
BSD

140
README_en.md Normal file
View File

@ -0,0 +1,140 @@
![SmsForwarder](pic/SmsForwarder.png)
# SmsForwarder
[![GitHub release](https://img.shields.io/github/release/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder/releases) [![GitHub stars](https://img.shields.io/github/stars/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/stargazers) [![GitHub forks](https://img.shields.io/github/forks/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/network/members) [![GitHub issues](https://img.shields.io/github/issues/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/issues) [![GitHub license](https://img.shields.io/github/license/pppscn/SmsForwarder)](https://github.com/pppscn/SmsForwarder/blob/main/LICENSE)
SmsForwarder - listens to SMS, incoming calls, and App notifications on Android mobile devices, and forward according to user defined rules to another App/device, including DingTalk, WeCom and WeCom Group Bot, Feishi Bot, E-mail, Bark, Webhook, Telegram Bot, ServerChan, PushPlus, SMS, etc.
### Download
> ⚠ Repo address: https://github.com/pppscn/SmsForwarder/releases
> ⚠ Repo mirror in China: https://gitee.com/pp/SmsForwarder/releases
> ⚠ Internet storage: https://wws.lanzoui.com/b025yl86h, access password: `pppscn`
> ⚠ CoolAPK.com: https://www.coolapk.com/apk/com.idormy.sms.forwarder
### Manual
> ⚠ GitHub: https://github.com/pppscn/SmsForwarder/wiki
> ⚠ Gitee: https://gitee.com/pp/SmsForwarder/wikis/pages
--------
## NOTE
* Any code/APK of `SmsForwarder` related to the this repository is for test, study, and research only, commercial use is **prohibited**. Legality, accuracy, completeness and validity of any code/APK of this repo is guaranteed by **NOBODY**, and shall only be determined by User.
* `pppscn` and/or any other Contributor to this repo is **NOT** responsible for any consequences (including but not limited to privacy leakage) arising from any user's direct or indirect use or dissemination of any code or APK of `SmsForwarder`, regardless of whether such use is in accordance with the laws of the country or territory where such user locates or such use or dissemination occurs.
* Should any entity finds the code/APK of this repo infringing their rights, please provide notice and identity and proprietorship document, and we will delete relating code/APK after examining such document.
* Privacy: `SmsForwarder` collects absolutely **NO** any of your personal data!! Except 1) version information to umeng.com for stats as the App starts, and 2) version number when manually check for update, `SmsForwarder` is **NOT** sending any data without users' knowledge.
--------
## Features and standards
**Simplicity** - `SmsForwarder` does two things only: Listen to "SMS service/Incoming calls/App notifications", and forward according to rules specified by user.
Benefit by simplicity:
* **E**fficient: (It's inconvenient to read the security codes such as OTP on a mobile phone, when you are using another device; and no solution satisfices our needs)
> + AirDroid: Too many functionalities, power consuming, requiring to many permissions, data relayed by a 3rd party, paid premium service...
> + IFTTT: Too many functionalities, power consuming, requiring to many permissions, data relayed by a 3rd party, paid premium service...
> + And other Apps (e.g. Tasker) with similar features.
* **E**nergy friendly: listens to broadcast only when running, and forwards message only when texts are received and logs recent forwarding contents and status.
* **E**ndurance: "Simplicity is the Ultimate Sophistication." The simpler the code is, the less it errs or crashes; that is what make the app runs longer.
### Workflow:
![工作流程](pic/working_principle.png "工作流程")
### Features:
- [x] Listen to SMS service, and forward according to user-defined rules (SMS contents to destination);
- [x] Forward to DingTalk Bot (to a group chat and @SOMBODY);
- [x] Forward to E-mail (SMTP with SSL encryption);
- [x] Forward to Bark;
- [x] Forward to webhook (a single web page [sending POST/GET requests to a designated URL](doc/POST_WEB.md));
- [x] Forward to WeCom Bots;
- [x] Forward to WeCom enterprise channels;
- [x] 转发到ServerChan(Server酱·Turbo版)
- [x] Forward to Telegram Bots (Proxy support ready);
- [x] Forward to another mobile phone via SMS [Note: Paid service, carriers may charge for SMS forwarding. SMS forwarding should apply with filtered rules when device has no Internet access.]
- [x] Check for new version and upgrade;
- [x] Cache purge;
- [x] Compatible with Android 5.xx, 6.xx, 7.xx, 8.xx, 9.xx, and 10.xx;
- [x] Support for dual SIM slots smartphones and label different slots/carrier/phone number (if available);
- [x] Support for multi-level rules;
- [x] Support for customized labeling of SIM slots and device, and customized forwarding templates;
- [x] Support for rules with regular expression
- [x] Support for rules for different SIM slots;
- [x] Forward missed call information (forwarded by SIM1 slot by default);
- [x] Retry 5 times after a failed request (customized interval time, stop retrying once successfully request);
- [x] Forward to FeiShu Bot;
- [x] Customized scheme (forwarder://main) wake up other Apps;
- [x] Monitor of battery status changes;
- [x] I18n support (Chinese and English currently);
- [x] Support for setting import and export functions (One-key cloning);
- [x] Listen to notifications of other Apps and forward;
- [x] Forward to PushPlus;
- [x] Support for customized template of forwarding rules (default template overrides if left blank);
- [x] Support for variables in regular expression of forwarding rules;
--------
### Screenshot:
| Docking in Ntf. screen | Main screen | Forward rules | Forward detail |
| ---- | ---- | ---- | ---- |
| ![前台服务常驻状态栏](pic/taskbar.jpg "前台服务常驻状态栏") | ![应用主界面](pic/main.png "应用主界面") | ![转发规则](pic/rule.jpg "转发规则") | ![转发详情](pic/maindetail.jpg "转发详情") |
| Test of Fw. rule(s) | Multiple rules | Supported senders | Add/Edit DingTalk sender |
| ![添加/编辑转发规则](pic/ruleset.png "添加/编辑转发规则") | ![多重匹配规则](pic/multimatch.png "多重匹配规则") | ![发送通道](pic/sender.jpg "发送通道") | ![添加/编辑发送通道钉钉](pic/sendersetdingding.jpg "添加/编辑发送通道钉钉") |
| Add/Edit E-mail sender | Add/Edit Bark sender | Add/Edit Webhook | Add/Edit WeCom Bot sender |
| ![添加/编辑发送通道邮箱](pic/sendersetemail.jpg "添加/编辑发送通道邮箱") | ![添加/编辑发送通道Bark](pic/sendersetbark.png "添加/编辑发送通道Bark") | ![添加/编辑发送通道网页通知](pic/sendersetwebnotify.jpg "添加/编辑发送通道网页通知") | ![添加/编辑发送通道企业微信群机器人](pic/sendersetqywechat.jpg "添加/编辑发送通道企业微信群机器人") |
| Add/Edit Telegram Bot sender | Add/Edit ServerChan Turbo sender | Add/Edit WeCom Group sender | Settings |
| ![添加/编辑发送通道Telegram机器人](pic/sendertelegram.jpg "添加/编辑发送通道Telegram机器人") | ![添加/编辑发送通道Server酱·Turbo版](pic/senderserverchan.jpg "添加/编辑发送通道Server酱·Turbo版") | ![添加/编辑发送通道企业微信应用](pic/sendersetqywxapp.jpg "添加/编辑发送通道企业微信应用") | ![应用设置](pic/setting.jpg "应用设置") |
| About/Update | RegEx & specific SIM slot | SMS Fw. template w/ SIM slot info. | Add/Edit an SMS forwarding rule |
| ![在线升级](pic/update.jpg "在线升级") | ![支持正则匹配规则 & 支持卡槽匹配规则](pic/regex.jpg "支持正则匹配规则 & 支持卡槽匹配规则") | ![转发短信模板增加卡槽标识](pic/siminfo.jpg "转发短信模板增加卡槽标识") | ![添加/编辑发送通道其他手机短信](pic/sendersetsms.jpg "添加/编辑发送通道其他手机短信") |
| Add/Edit FeiShu Bot sender | Import and export (one-key cloning) | Listen to ntf. of other Apps and fw. | Get App pkg name(s) |
| ![添加/编辑发送通道飞书](pic/senderfeishu.png "添加/编辑发送通道飞书") | ![增加配置导出导入功能(一键克隆)](pic/clone.png "增加配置导出导入功能(一键克隆)") | ![监听其他APP通知信息并转发](pic/app_notify.png "监听其他APP通知信息并转发") | ![获取所有应用列表方便复制APP包名](pic/app_list.png "获取所有应用列表方便复制APP包名") |
--------
## Feedback and suggestions:
+ Submit an issue or Pull Request.
+ Join group chat (only Chinese groups/channels available currently)
| DingTalk | QQ user group #1: 562854376 | QQ user group #2: 31330492 | WeCom |
| ---- | ---- | ---- | ---- |
| ![钉钉客户群](pic/dingtalk.png "钉钉客户群") | ![QQ交流群562854376](pic/qqgroup_1.jpg "QQ交流群562854376") | ![QQ交流群31330492](pic/qqgroup_2.jpg "QQ交流群31330492") | ![企业微信群](pic/qywechat.png "企业微信群") |
## Acknowledgements
> Thanks to the projects below, `SmsForwarder` won't exists without them!
+ https://github.com/xiaoyuanhost/TranspondSms (Foundation of `SmsForwarder`)
+ https://github.com/square/okhttp (http communications)
+ https://github.com/xuexiangjys/XUpdateAPI (online update)
+ https://github.com/mailhu/emailkit (email sending)
+ https://github.com/alibaba/fastjson (json parsing)
+ [![GitHub license](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg?_ga=2.126618957.1361252949.1638261367-1417196221.1635638144&_gl=1*1pfl3dq*_ga*MTQxNzE5NjIyMS4xNjM1NjM4MTQ0*_ga_V0XZL7QHEB*MTYzODMzMjA4OC43LjAuMTYzODMzMjA5Ny4w)](https://jb.gg/OpenSourceSupport) (License Certificate for JetBrains All Products Pack)
--------
## Star this repo if you find this application useful!
[![starcharts stargazers over time](https://starchart.cc/pppscn/SmsForwarder.svg)](https://github.com/pppscn/SmsForwarder)
--------
## LICENSE
BSD

View File

@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">SmsForwarder</string> <string name="app_name">SmsForwarder</string>
<string name="notification_content">Forward to DingTalk/WeCom/FeiShu/Email/Bark/ServerChan/Telegram/Webhook, etc</string> <string name="notification_content">Forward SMS (and others!) to another app/device, a must-have for anyone's secondary smartphone. Free and open source, do NOT buy or sell this App.</string>
<!--Common--> <!--Common-->
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
@ -17,22 +17,22 @@
<string name="sender_setting">Sender Setting</string> <string name="sender_setting">Sender Setting</string>
<string name="app_list">App List</string> <string name="app_list">App List</string>
<string name="log_tips">Tips: Pull to refresh; Long press to delete one log entry.</string> <string name="log_tips">Tips: Pull to refresh; Long press to delete one log entry.</string>
<string name="rule_tips">Tips: Tap "NEW FORWARDING RULE" to add a new rule; Long press one to delete; Tap an existing one to edit.</string> <string name="rule_tips">Tips: Tap "NEW FORWARDING RULE" to add a new rule; Long press a rule to delete; Tap an existing rule to edit.</string>
<string name="sender_tips">Tips: Tap "NEW SENDER" to add a new sender; Long press one to delete; Tap an existing one to edit.</string> <string name="sender_tips">Tips: Tap "NEW SENDER" to add a new sender; Long press a sender to delete; Tap an existing sender to edit.</string>
<string name="app_tips">Tips: Tap to copy the package name of APP; Long press one to start and jump to.</string> <string name="app_tips">Tips: Tap to copy the package name of an App; Long press an App to start and jump to it.</string>
<!--AboutActivity--> <!--AboutActivity-->
<string name="version">Version</string> <string name="version">Version</string>
<string name="check_for_updates">Check for updates</string> <string name="check_for_updates">Check for updates</string>
<string name="auto_startup">Auto startup</string> <string name="auto_startup">Auto startup</string>
<string name="show_tips">Show tips</string> <string name="show_tips">Show tips</string>
<string name="open_source">Open source</string> <string name="open_source">Repo URL</string>
<string name="synchronize_mirror">Synchronize Mirror</string> <string name="synchronize_mirror">Repo Mirror</string>
<string name="qq_group">QQ Group</string> <string name="qq_group">QQ Group</string>
<string name="qq_group1">1st562854376</string> <string name="qq_group1">1st562854376</string>
<string name="qq_group2">2nd31330492</string> <string name="qq_group2">2nd31330492</string>
<string name="join_qq_group1">Join 1st Group</string> <string name="join_qq_group1">Join 1st Group</string>
<string name="join_qq_group2">Join 2nd Group</string> <string name="join_qq_group2">Join 2nd Group</string>
<string name="cache">Cache</string> <string name="cache">Cache size</string>
<string name="purge">Purge</string> <string name="purge">Purge</string>
<string name="checking">Checking…</string> <string name="checking">Checking…</string>
<string name="up_to_date">Yo, you are up to date!</string> <string name="up_to_date">Yo, you are up to date!</string>
@ -42,37 +42,37 @@
<string name="bt_refresh_log">Clear Logs</string> <string name="bt_refresh_log">Clear Logs</string>
<string name="delete_log_title">Delete confirmation</string> <string name="delete_log_title">Delete confirmation</string>
<string name="delete_log_tips">Are you sure to delete this log entry?</string> <string name="delete_log_tips">Are you sure to delete this log entry?</string>
<string name="delete_log_toast">The log entry has deleted.</string> <string name="delete_log_toast">This log entry is deleted.</string>
<string name="details">Details</string> <string name="details">Details</string>
<string name="clear_logs_tips">Are you sure to clear all forwarding logs?</string> <string name="clear_logs_tips">Are you sure to clear all forwarding logs?</string>
<string name="pull_tips">Pull to refresh.</string> <string name="pull_tips">Pull to refresh.</string>
<string name="release_tips">Release to refresh.</string> <string name="release_tips">Release to refresh.</string>
<string name="reflashing_tips">Refreshing…</string> <string name="reflashing_tips">Refreshing…</string>
<!--RuleActivity--> <!--RuleActivity-->
<string name="setrule">Fwd Rule Settings</string> <string name="setrule">SMS Fw. Rule Settings</string>
<string name="setrule_call">Fwd Rule Settings of call</string> <string name="setrule_call">Call Fw. Rule Settings</string>
<string name="setrule_app">Fwd Rule Settings of app</string> <string name="setrule_app">App Ntf. Fw. Rule Settings</string>
<string name="delete_rule_title">Delete confirmation</string> <string name="delete_rule_title">Delete confirmation</string>
<string name="delete_rule_tips">Are you sure to delete this rule entry?</string> <string name="delete_rule_tips">Are you sure to delete this rule?</string>
<string name="delete_rule_toast">The rule entry has deleted.</string> <string name="delete_rule_toast">The rule has deleted.</string>
<string name="new_sender_first">Please add a new sender and then choose it.</string> <string name="new_sender_first">Please add a new sender and then choose it.</string>
<string name="add_sender_first">Please add a sender first.</string> <string name="add_sender_first">Please add a sender first.</string>
<string name="select_sender">Select Sender</string> <string name="select_sender">Select Sender</string>
<string name="rule_tester">Rule tester:</string> <string name="rule_tester">Rule tester:</string>
<string name="new_sms_rule">New sms forwarding rule</string> <string name="new_sms_rule">New SMS Fw. rule</string>
<string name="new_call_rule">New call forwarding rule</string> <string name="new_call_rule">New Call Fw. rule</string>
<string name="new_app_rule">New app forwarding rule</string> <string name="new_app_rule">New App Fw. rule</string>
<string name="test_sim_slot">Test Sim Slot</string> <string name="test_sim_slot">Test Sim Slot</string>
<string name="test_phone_number">Test Phone Number</string> <string name="test_phone_number">Test Phone Number</string>
<string name="test_msg_content">Test Msg Content</string> <string name="test_msg_content">Test Msg Content</string>
<string name="test_package_name">Test PackageName</string> <string name="test_package_name">Test PackageName</string>
<string name="test_inform_content">Test Inform content</string> <string name="test_inform_content">Test Ntf. content</string>
<string name="match_sim_slot">Sim Slot</string> <string name="match_sim_slot">SIM Slot</string>
<string name="match_field">Field</string> <string name="match_field">Field</string>
<string name="phone_number">Phone No.</string> <string name="phone_number">Phone No.</string>
<string name="package_name">PackageName</string> <string name="package_name">PackageName</string>
<string name="sms_content">SMS</string> <string name="sms_content">SMS</string>
<string name="inform_content">Inform content</string> <string name="inform_content">Ntf. content</string>
<string name="multiple_matches">Multiple</string> <string name="multiple_matches">Multiple</string>
<string name="match_type">Type</string> <string name="match_type">Type</string>
<string name="btn_is">Is</string> <string name="btn_is">Is</string>
@ -85,8 +85,8 @@
<!--SenderActivity--> <!--SenderActivity-->
<string name="invalid_sender">Invalid sender, abort!</string> <string name="invalid_sender">Invalid sender, abort!</string>
<string name="delete_sender_title">Delete confirmation</string> <string name="delete_sender_title">Delete confirmation</string>
<string name="delete_sender_tips">Are you sure to delete this rule entry?</string> <string name="delete_sender_tips">Are you sure to delete this sender?</string>
<string name="delete_sender_toast">The rule entry has deleted.</string> <string name="delete_sender_toast">The sender is deleted.</string>
<string name="add_sender_title">Select sender type</string> <string name="add_sender_title">Select sender type</string>
<string name="not_supported">Not supported</string> <string name="not_supported">Not supported</string>
<string name="setdingdingtitle">DingTalk Bot Settings</string> <string name="setdingdingtitle">DingTalk Bot Settings</string>
@ -105,15 +105,15 @@
<string name="test_sms">【JD】code 387481, ihelp.jd.com</string> <string name="test_sms">【JD】code 387481, ihelp.jd.com</string>
<string name="test_group_name">Test Group Name</string> <string name="test_group_name">Test Group Name</string>
<string name="failed_to_fwd">Failed to fwd</string> <string name="failed_to_fwd">Failed to fwd</string>
<string name="invalid_token">Token cannot be empty</string> <string name="invalid_token">Token cannot be blank</string>
<string name="invalid_email">Invalid email settings</string> <string name="invalid_email">Invalid email settings</string>
<string name="invalid_bark_server">Bark-server cannot be empty</string> <string name="invalid_bark_server">Bark-server cannot be blank</string>
<string name="invalid_apiToken_or_chatId">Neither ApiToken nor ChatId can be empty</string> <string name="invalid_apiToken_or_chatId">Neither ApiToken nor ChatId can be blank</string>
<string name="invalid_sendkey">SendKey cannot be empty</string> <string name="invalid_sendkey">SendKey cannot be blank</string>
<string name="invalid_webserver">WebServer cannot be empty</string> <string name="invalid_webserver">WebServer cannot be blank</string>
<string name="invalid_webhook">webHook cannot be empty</string> <string name="invalid_webhook">Webhook cannot be blank</string>
<string name="invalid_at_mobiles">The specified member cannot be empty or select @all</string> <string name="invalid_at_mobiles">The specified member cannot be blank or select @all</string> <!-- “指定成员 不能为空 或者 选择@all” 这句话是什么意思?“指定成员既不能为‘空’也不能为‘选择@all”吗还是“指定成员不能为空或者可以@all”呢 -->
<string name="invalid_phone_num">Phone number cannot be empty</string> <string name="invalid_phone_num">Phone number cannot be blank</string>
<string name="new_sender">New Sender</string> <string name="new_sender">New Sender</string>
<string name="set_bark_name">Bark Group Name</string> <string name="set_bark_name">Bark Group Name</string>
<string name="set_bark_server">Bark-Server, e.g. https://bark.bms.ink/XXXXXXXX/</string> <string name="set_bark_server">Bark-Server, e.g. https://bark.bms.ink/XXXXXXXX/</string>
@ -149,7 +149,7 @@
<string name="WebNotifyMethod" formatted="false">Method</string> <string name="WebNotifyMethod" formatted="false">Method</string>
<string name="WebNotifyWebServer">WebServer e.g. https://a.b.com/msg?token=xyz</string> <string name="WebNotifyWebServer">WebServer e.g. https://a.b.com/msg?token=xyz</string>
<string name="WebNotifyWebParams">WebParams e.g. payload=%7B%22text%22%3A%22[msg]%22%7D [msg] will be replaced with text message content. \nSupport Json format, for example: {"text":[MSG]}.\n Note: MSG is automatically utF-8 encoded in addition to JSON format</string> <string name="WebNotifyWebParams">WebParams e.g. payload=%7B%22text%22%3A%22[msg]%22%7D [msg] will be replaced with text message content. \nSupport Json format, for example: {"text":[MSG]}.\n Note: MSG is automatically utF-8 encoded in addition to JSON format</string>
<string name="WebNotifySecret">Secret (If empty, sign is not counted)</string> <string name="WebNotifySecret">Secret (sign is not counted if left blank)</string>
<string name="SmsSimSlot">Sim Slot</string> <string name="SmsSimSlot">Sim Slot</string>
<string name="same_source">Same source</string> <string name="same_source">Same source</string>
<string name="SmsMobiles">Receive mobile phone numbers separated by, e.g. 15888888888;19999999999</string> <string name="SmsMobiles">Receive mobile phone numbers separated by, e.g. 15888888888;19999999999</string>
@ -170,14 +170,14 @@
<string name="forward_app_notify">Forward app notify</string> <string name="forward_app_notify">Forward app notify</string>
<string name="forward_app_notify_tips">Master switch, please grant notice first</string> <string name="forward_app_notify_tips">Master switch, please grant notice first</string>
<string name="enable_custom_templates">Enable custom templates</string> <string name="enable_custom_templates">Enable custom templates</string>
<string name="enable_custom_templates_tips">Priority: custom template for forwarding rules >Global custom template >The default</string> <string name="enable_custom_templates_tips">Priority: custom template for forwarding rules > Global custom template > System default</string>
<string name="enable_regex_replace">Enable regular replacement content</string> <string name="enable_regex_replace">Enable regular replacement content</string>
<string name="enable_regex_replace_tips">Format: RegularExpression===ReplacementResult,One rule per line.\ne.g. (\\d{3})\\d+(\\d{4})===$1****$2</string> <string name="enable_regex_replace_tips">Format: RegularExpression===ReplacementResult,One rule per line.\ne.g. (\\d{3})\\d+(\\d{4})===$1****$2</string>
<string name="regex_check_tips">Format check: line %d is badly formatted! Format: RegularExpression===ReplacementResult</string> <string name="regex_check_tips">Format check: line %d is badly formatted! Format: RegularExpression===ReplacementResult</string>
<string name="enable_exclude_from_recents">Exclude from recents</string> <string name="enable_exclude_from_recents">Hide from recent Apps</string>
<string name="enable_exclude_from_recents_tips">After this function is enabled, manual killing of processes is effectively avoided, which helps to keep the process alive</string> <string name="enable_exclude_from_recents_tips">Enable to hide SmsForwarder from recent Apps to keep it alive</string>
<string name="custom_templates">Custom templates</string> <string name="custom_templates">Custom templates</string>
<string name="custom_templates_tips">TipInsert labels as needed;Leave blank to default template</string> <string name="custom_templates_tips">TipInsert labels as needed; Leave blank to apply default template</string>
<string name="insert_sender">Phone</string> <string name="insert_sender">Phone</string>
<string name="insert_sender_app">PackageName</string> <string name="insert_sender_app">PackageName</string>
<string name="insert_content">SMS</string> <string name="insert_content">SMS</string>
@ -186,9 +186,9 @@
<string name="insert_time">Time</string> <string name="insert_time">Time</string>
<string name="insert_device_name">Device</string> <string name="insert_device_name">Device</string>
<string name="init_setting">Restore initial Setting</string> <string name="init_setting">Restore initial Setting</string>
<string name="init_setting_tips">Are you sure you want to restore the initial configuration? \n\n[Warning] This operation will reset Settings, delete send channels, rules, logs!</string> <string name="init_setting_tips">Are you sure you want to restore the initial configuration? \n\n[Warning] This operation will reset settings, and delete senders, rules, and logs!</string>
<string name="battery_setting">Battery Optimization</string> <string name="battery_setting">Battery Optimization</string>
<string name="request_permission">Request Notify Permission</string> <string name="request_permission">Request Ntf. Permission</string>
<string name="unknown_number">Unknown Number</string> <string name="unknown_number">Unknown Number</string>
<string name="calling">Incoming telegram</string> <string name="calling">Incoming telegram</string>
<string name="unsupport">Your phone does not support this setting</string> <string name="unsupport">Your phone does not support this setting</string>
@ -200,40 +200,40 @@
<string name="cache_size">0KB</string> <string name="cache_size">0KB</string>
<string name="sim1" tools:ignore="Typos">SIM1</string> <string name="sim1" tools:ignore="Typos">SIM1</string>
<string name="sim2" tools:ignore="Typos">SIM2</string> <string name="sim2" tools:ignore="Typos">SIM2</string>
<string name="mu_rule_tips">多重匹配规则示例:\n \n 并且 是 手机号 相等 10086\n 或者 是 手机号 相等 10011\n 并且 是 短信内容 包含 欠费\n \n 以上规则表示收到短信并且手机号是10086 或者 手机号是10010并且 短信内容 包含 欠费 时转发短信\n 注意:每行开始的空格代表层级,太过复杂的多重规则可能导致内存占用很大!</string> <string name="mu_rule_tips">多重匹配规则示例:\n \n 并且 是 手机号 相等 10086\n 或者 是 手机号 相等 10011\n 并且 是 短信内容 包含 欠费\n \n 以上规则表示收到短信并且手机号是10086 或者 手机号是10010并且 短信内容 包含 欠费 时转发短信\n Note: Space(s) at beginning of each line indicates rule hierarchy, complicity of multiple rules may causes large memory usage!</string>
<string name="mu_rule_tips2">多重匹配规则示例:\n \n 并且 是 包名 相等 com.tencent.mm\n 或者 是 包名 相等 com.tencent.mm\n 并且 是 通知内容 包含 欠费\n \n 以上规则表示收到APP通知并且包名是com.tencent.mm 或者 包名是com.tencent.mm并且 通知内容 包含 欠费 时转发通知\n 注意:每行开始的空格代表层级,太过复杂的多重规则可能导致内存占用很大!</string> <string name="mu_rule_tips2">多重匹配规则示例:\n \n 并且 是 包名 相等 com.tencent.mm\n 或者 是 包名 相等 com.tencent.mm\n 并且 是 通知内容 包含 欠费\n \n 以上规则表示收到APP通知并且包名是com.tencent.mm 或者 包名是com.tencent.mm并且 通知内容 包含 欠费 时转发通知\n Note: Space(s) at beginning of each line indicates rule hierarchy, complicity of multiple rules may causes large memory usage!</string>
<string name="post">POST</string> <string name="post">POST</string>
<string name="get">GET</string> <string name="get">GET</string>
<!--CloneActivity--> <!--CloneActivity-->
<string name="local_ip">Local IP</string> <string name="local_ip">Local IP</string>
<string name="operating_instruction">Operation instructions: \n1. Please keep the old and new phones in the same WiFi network, and do not turn on isolation \n2.The old mobile phone directly click "send" button, get "server IP" \n3. After filling in "Server IP" for the new mobile phone, click "Receive" button \n [note], the sender and forwarding rules will be completely covered after the new mobile phone receives!</string> <string name="operating_instruction">Instructions: \n1. Please keep the SOURCE and DESTINATION phones in the same Wi-Fi network, and do not turn on isolation. \n2. Tap "Send" on SOURCE mobile phone, and get "server IP" \n3. After filling in "Server IP" on DESTINATION phone, tap "Receive". \n [NOTE:] sender(s), forwarding rule(s) and log(s) will be overwritten after cloning!</string> <!-- 原文是“新旧手机”,英文翻译中处理为“源”手机和“目标”手机,因为担心“新旧”的表述引起混淆(有没一种可能就是用户就是用从新手机的设备复制到旧手机上去呢?)。 -->
<string name="send">Send</string> <string name="send">Send</string>
<string name="stop">Stop</string> <string name="stop">Stop</string>
<string name="old_mobile_phone">I\'m the old phone</string> <string name="old_mobile_phone">I\'m the SCOURCE phone</string>
<string name="receive">Receive</string> <string name="receive">Receive</string>
<string name="new_mobile_phone">I\'m the new phone</string> <string name="new_mobile_phone">I\'m the DESTINATION phone</string>
<string name="server_ip">Server IP: </string> <string name="server_ip">Server IP: </string>
<string name="point">.</string> <string name="point">.</string>
<string name="invalid_ip">Please enter a valid IP address</string> <string name="invalid_ip">Please enter a valid IP address</string>
<string name="server_has_started">The server is started successfully</string> <string name="server_has_started">The server is started successfully</string>
<string name="server_has_stopped">The server has been stopped</string> <string name="server_has_stopped">The server has been stopped</string>
<string name="sender_cannot_receive">This mobile phone is the sender and cannot receive files.</string> <string name="sender_cannot_receive">This mobile phone is the SOURCE and cannot receive files.</string>
<string name="no_wifi_network">If the Wifi network is not connected, the one-click cloning function cannot be used.</string> <string name="no_wifi_network">One-tap cloning function does NOT work without Wi-Fi connection.</string>
<string name="invalid_server_ip">Please enter a valid server IP address</string> <string name="invalid_server_ip">Please enter a valid server IP address</string>
<string name="download_success">Download Success</string> <string name="download_success">Download Success</string>
<string name="on_wireless_network">Currently on a wireless network</string> <string name="on_wireless_network">A Wireless network connected.</string>
<string name="on_mobile_network">Currently on a mobile network</string> <string name="on_mobile_network">A Mobile network connected.</string>
<string name="no_network">No network at present</string> <string name="no_network">Not connected to a network.</string>
<string name="not_connected_wifi">Not connected WIFI</string> <string name="not_connected_wifi">No Wi-Fi network connected.</string>
<string name="failed_to_get_ip">Failed to get IP address</string> <string name="failed_to_get_ip">Failed to get an IP address</string>
<string name="sms">SMS</string> <string name="sms">SMS</string>
<string name="call">Call</string> <string name="call">Call</string>
<string name="app">App</string> <string name="app">App</string>
<string name="appicon">App Icon</string> <string name="appicon">App Icon</string>
<string name="user_app">User App</string> <string name="user_app">User App</string>
<string name="system_app">System App</string> <string name="system_app">System App</string>
<string name="tips_battery_optimization">Please set the power saving optimization to unlimited (no optimization), which is conducive to the survival of SMS forwarder!</string> <string name="tips_battery_optimization">Please deactivate power optimization for SmsForwarder, in order to keep the App alive!</string>
<string name="tips_notification_listener">Please grant the right to use SMS forwarder notification first, otherwise the APP notification cannot be forwarded and the forwarding will be automatically closed!</string> <string name="tips_notification_listener">Please grant Notification reading permission to SmsForwarder, before other Apps' notification could be forwarded. Forwarding automatically canceled!</string>
<string name="notification_listener_service_enabled">The notification service is enabled</string> <string name="notification_listener_service_enabled">The notification service is enabled</string>
<string name="notification_listener_service_disabled">The notification service is disabled</string> <string name="notification_listener_service_disabled">The notification service is disabled</string>
<string name="pushplus_token">Token</string> <string name="pushplus_token">Token</string>