是否可以检索帐户上次同步的时间,例如系统设置 - >帐户和同步应用程序?我正在使用Android 2.2。
查看AccountSyncSettings.java
的2.2源代码,我看到状态是使用以下方法检索的:
SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority);
但是SyncStatusInfo和getSyncStatus似乎不是公共API的一部分(用@hide标记)。有没有其他方法来获取此信息?
答案 0 :(得分:3)
您可以使用反射来实现此目的。这是我实现此代码的代码
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;
}
答案 1 :(得分:2)
“设置”应用使用ContentResolver.getSyncStatus(account, authority)
。但是,这不是公共API的一部分。你可以使用它,但它可能会破坏任何未来版本。