ContentResolver getCurrentSyncs():SyncInfo帐户名被删除

时间:2018-02-09 17:44:53

标签: android account android-contentresolver android-syncadapter

当我调用 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 M上的

修改 直接从AccountManager访问帐户名称是可读的。 (getAccounts())

1 个答案:

答案 0 :(得分:0)

知道了。

在第32行的 SyncInfo.java source code中找不到任何文档:

/**
 * 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("*****", "*****");

我仔细检查了许可,但没有发现错误,所以我断开了电话,得到了icetea并观看了netflix。这解决了这个问题。

编辑:我在一个点上更改了帐户类型定义,但这并不能解释为什么getCurrentSyncs()被审查并且getAccounts()不是。

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