Android ContentProvider中的支持帐户

Android ContentProvider中的支持帐户,android,android-contentprovider,android-syncadapter,Android,Android Contentprovider,Android Syncadapter,我正在尝试增强我的应用程序,以支持多个应用程序,并使用我自己的AccountManger和一个自定义应用程序。我了解如何构建SyncAdapter和ContentProvider。(我从中学到了) 但我对如何将帐户与内容提供商绑定感到困惑。 在SyncAdapter中,函数onPerformSync()传递对触发同步适配器的帐户对象的引用。那很好。但一旦进入,我该如何处理这些信息 @Override public void onPerformSync( Account account,

我正在尝试增强我的应用程序,以支持多个应用程序,并使用我自己的AccountManger和一个自定义应用程序。我了解如何构建SyncAdapter和ContentProvider。(我从中学到了)

但我对如何将帐户与内容提供商绑定感到困惑。

在SyncAdapter中,函数
onPerformSync()
传递对触发同步适配器的帐户对象的引用。那很好。但一旦进入,我该如何处理这些信息

@Override
public void onPerformSync(
    Account account,
    Bundle extras,
    String authority,
    ContentProviderClient provider,
    SyncResult syncResult) {

    Log.d(TAG, "onPerformSync");

    // account??

    Cursor c = provider.query("content://org.example.myapp/letters", DataContract.Letters.PROJECTION_ALL, selectionClause, selectionArgs, DataContract.Letters.SORT_ORDER_DEFAULT )
}
ContentProviders似乎不直接支持Account对象。似乎我们必须通过在每次插入、更新、删除和查询中添加帐户属性来支持它

大概是这样的:

content://org.example.myapp/letters/d0470cc1c6af4b7bab8e8cedd58d2329/123
其中:第一个UUID是帐户id,后面的整数是记录编号

这也意味着当有人从AccountManager中删除帐户时,我们必须手动处理内部代码。这可能是最麻烦的部分

我觉得这很奇怪。在阅读了我对内容提供商和同步适配器所做的所有阅读之后,你会认为其他人会想解释如何做到这一点。这就是促使我在这里提出这个问题的原因

是否有一些优雅的方式来支持帐户,使用内容提供商和SyncAdapter,而不必在每次插入、更新、删除和查询时都附加一个额外的帐户变量

拥有帐户类型的优点之一是,当用户添加/删除帐户时,它可以清理同步适配器设置。但是如何清理内容提供商中该帐户的内容呢?我不确定是否可以通过AccountManager以某种方式完成这项家务工作