当我调用 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())
答案 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被真正授予,问题就消失了。