ContentResolver getCurrentSyncs(): SyncInfo 账户名被删

ContentResolver getCurrentSyncs(): SyncInfo account name is censored

当我调用 ContentResolver.getCurrentSyncs() 并打印 SyncInfo 对象的帐户名称时,我得到的是星号 (*****) 而不是字符。

是只在日志上被删,还是字符串本身不可读? 知道我如何具体比较它吗? (等于)

String original = "myName";    

for (SyncInfo info : ContentResolver.getCurrentSyncs()) {
        Log.i(info.account.name); // prints ******

        boolean result = original.equals(info.account.name); // always false?
}

授予的权限:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />

在 Android 上

编辑: 直接从 AccountManager 访问帐户名称是可读的。 (getAccounts())

知道了。

没有找到任何文档,但在 SyncInfo.javasource code 的第 32 行:

/**
 * Used when the caller receiving this object doesn't have permission to access the accounts
 * on device.
 * @See Manifest.permission.GET_ACCOUNTS
 */
private static final Account REDACTED_ACCOUNT = new Account("*****", "*****");

我仔细检查了权限,但没有发现问题,所以我断开了 phone 的连接,得到 icetea 并观看了 netflix。这解决了问题。

编辑:我曾经更改过帐户类型定义,但这并不能解释为什么 getCurrentSyncs() 被审查而 getAccounts() 没有。

Edit2:在另一个 phone 上遇到问题:禁用并重新启用我的应用程序所需的 CONTACTS 权限后,GET_ACCOUNTS 被真正授予,问题消失了。