是否可以检索帐户上次同步的时间,就像系统“设置”->“帐户与同步”应用程序所做的那样?我使用的是 Android 2.2。
查看 AccountSyncSettings.java
的 2.2 源代码,我看到使用以下方法检索状态:
SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority);
但是 SyncStatusInfo 和 getSyncStatus 似乎不是公共(public) API 的一部分(用@hide 标记)。是否有其他方式获取此信息?
最佳答案
你可以使用反射来实现这个目的。这是我实现这个的代码
private long getLasySyncTime() {
long result = 0;
try {
Method getSyncStatus = ContentResolver.class.getMethod(
"getSyncStatus", Account.class, String.class);
if (mAccount != null && mSyncAdapter != null) {
Object status = getSyncStatus.invoke(null, mAccount,
mSyncAdapter.authority);
Class<?> statusClass = Class
.forName("android.content.SyncStatusInfo");
boolean isStatusObject = statusClass.isInstance(status);
if (isStatusObject) {
Field successTime = statusClass.getField("lastSuccessTime");
result = successTime.getLong(status);
TLog.d(WeixinSetting.class, "get last sync time %d", result);
}
}
} catch (NoSuchMethodException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
TLog.d(WeixinSetting.class, e.getMessage() + e.getCause().getMessage());
} catch (IllegalArgumentException e) {
} catch (ClassNotFoundException e) {
} catch (NoSuchFieldException e) {
} catch (NullPointerException e) {
}
return result;
}
关于android - 如何检索帐户的 'last sync' 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635790/