Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ADB或Appium,以编程方式从Android设置中删除链接帐户_Android_Facebook_Adb_Appium - Fatal编程技术网

使用ADB或Appium,以编程方式从Android设置中删除链接帐户

使用ADB或Appium,以编程方式从Android设置中删除链接帐户,android,facebook,adb,appium,Android,Facebook,Adb,Appium,如何在Android设置>帐户中以编程方式从Android设备中删除/清除链接帐户?ADB或Appium或其他编程方法是否可以实现这一点 Android设备通常将Google或Facebook的链接账户保存在设备设置级别,而不是单个应用程序的缓存中。我想删除这些帐户(特别是Facebook,它似乎每个设备只有一个帐户) 这个问题的背景是自动化测试 手动/手动删除帐户不是一个选项 我不希望通过Appium UI自动化来实现这一点;即使Appium可以在一台设备上解决这个问题,但不同的androi

如何在Android设置>帐户中以编程方式从Android设备中删除/清除链接帐户?ADB或Appium或其他编程方法是否可以实现这一点

Android设备通常将Google或Facebook的链接账户保存在设备设置级别,而不是单个应用程序的缓存中。我想删除这些帐户(特别是Facebook,它似乎每个设备只有一个帐户)

这个问题的背景是自动化测试

  • 手动/手动删除帐户不是一个选项
  • 我不希望通过Appium UI自动化来实现这一点;即使Appium可以在一台设备上解决这个问题,但不同的android设备/操作系统版本具有不同的UI设置,因此UI自动化不是一个可扩展的解决方案
  • 最好、最简单、最可扩展的解决方案将允许我执行ADB命令,该命令可以删除链接的帐户
编辑:

Appium论坛上有一个未回答的问题,问了一个类似的问题:

我也有同样的问题,发现了一些可以删除所有帐户的东西。 如果您严格只想删除例如Google帐户,请查看您获得的AuthenticatorDescription类型

private void clearAccounts() {
        AccountManager manager = AccountManager.get(getApplicationContext());
        AuthenticatorDescription[] authTypes = manager.getAuthenticatorTypes();
        for (AuthenticatorDescription authDesc : authTypes) {
            Account[] accounts = manager.getAccountsByType(authDesc.type);
            if (accounts.length == 0) {
                continue;  // No accounts of this type, continue loop.
            }
            for (final Account account : accounts) {
                manager.removeAccount(account, null, null, null);
            }
        }
    }

链接的帐户存储在数据库
/data/system\ce/0/accounts\u ce.db
中,要访问它,您需要根访问权限


在这种情况下,如果您具有root访问权限,您只需从数据库中删除指定帐户的条目。

您是否偶然发现了什么?要么是ADB命令,要么至少是一个不涉及UI测试框架的编程解决方案?@MahNas92不,对不起,我想我还没有找到解决方案。同时,我停止了Android自动化的工作也无济于事,所以答案可能不会很快从我这里得到:PI终于找到了一些东西!刚刚添加了它作为答案!这是安卓应用程序源代码中的白盒解决方案吗?看起来像。注意到这一点是因为这个问题最初是从ADB/Appium的角度提出的,所以blackbox access。这确实是针对Android API运行的,但话说回来,如果只是为了删除帐户而不打算测试UI,whitebox vs blackbox实际上并不重要,至少我是这么想的。也许我假设得太多,或者只是从我的角度来看,但我编写的UI测试需要从“全新开始”(没有帐户)开始,因此如何从UI POV中删除帐户并不重要。但是再一次,从UI测试的角度来看,我想说这是一种非UI方法,与ADB命令类似-无论是whitebox还是blackbox…这个解决方案仍然有效吗?您能描述一下您是如何获得权限的吗?具体地说,我认为这需要系统级的ACCOUNT_MANAGER许可。谢谢你的帮助。