使用Tasker控制特定账户同步状态

4次阅读
没有评论

*

问题描述

希望利用Tasker(及其插件Synker)仅针对某个特定的账号/应用进行激活或禁用同步设置,而无需更改其他任何账号的状态。例如,在任务器中,只切换工作Google Apps账户中的“收件箱”邮件同步开关。

但是当前使用的方法会导致所有在配置前就已经存在的账号信息被改变,或是无法正确保存用户的自定义同步设置。

解决方案

方案1 – 使用Synker插件结合Tasker脚本

此方案需要编写少量脚本来精确地控制特定账号的同步状态,并配合Tasker插件来实现场景需求:

步骤一:安装和配置Synker插件(如果尚未完成)

确保已在设备中安装了Synker插件并已正确连接至要管理的邮件账户。

步骤二:设定Tasker任务

  1. 在Tasker中开启新任务,并命名为“切换工作账户收件箱同步”。
  2. 为该任务添加一个条件:“网络 – 特定Wi-Fi”。选择目标SSID如“CorpNet”。
  3. 添加动作“插件 – Synker”并进行配置,使其仅触发“Work Email on, Personal Email Off”的场景。

步骤三:编写脚本以精确控制同步设定

创建一个名为toggle_work_email_sync.sh的bash脚本:

#!/system/bin/sh

GMAIL_ACCOUNT="yourworkemail@gmail.com"
INBOX_LABEL="Inbox"

# 切换工作邮箱的收件箱同步开关
if $(is_connected "CorpNet"); then
    adb shell am broadcast -a android.intent.action.DATABASE_CHANGED -n com.google.android.gsf/.syncadapter.GoogleSyncAdapter --es account "com.google" --es authority "com.google.android.gsf.syncadapter" --ez autoStart true
else
    adb shell am broadcast -a android.intent.action.DATABASE_CHANGED -n com.google.android.gsf/.syncadapter.GoogleSyncAdapter --es account "com.google" --es authority "com.google.android.gsf.syncadapter" --ez autoStart false
fi

通过adb命令直接控制Gmail账户的数据库同步状态,而不是依靠合成广播或插件。

注意:
– 在编写脚本之前,请确保对安卓系统有一定程度的理解。
– 该示例仅针对谷歌邮箱应用进行了优化。如果使用其他邮件客户端可能需要进行适当修改。
– 具体执行adb命令取决于设备和账号权限设置。

方案2 – 使用EventReceiver插件

若先前已安装并配置Synker存在限制,也可以尝试使用EventReceiver进行更灵活的场景控制:

  1. 装载并触发自定义EventReceiver以响应网络连接或断开操作。
  2. 编写EventReceiver代码逻辑:例如基于联网状态来决定如何切换同步开关。
public class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        String ssid = intent.getStringExtra(WifiManager.SupplicantState.EXTRA_SSID);

        if("CorpNet".equals(ssid)){
           //触发特定的Synker设定,如“工邮打开,私家关闭”
        }

       else if("CityFree".equals(ssid)){
            //其他设定,比如关掉工作邮箱同步
         }

      }
}

通过这种组合方式结合Tasker与EventReceiver插件,可以灵活定制更加复杂的同步场景需求。

综上所述,针对该问题,使用脚本编写以及精细配置Synker或EventReceiver是两种合适而有力的解决方案。根据自身的硬件和软件环境选择合适的方法进行实践。

正文完