如何获取特定包的所有同步适配器 (type/authority)

How to get all sync adapters (type/authority) for a specific package

我正在尝试确定已安装应用程序提供的 sync adapters 列表,但我找不到任何链接同步权限和 package/app 处理它的内容?

使用AccountManager.getAccountsByType只提供账号,不提供任何权限和包信息

使用 ContentResolver.getSyncAdapterTypes() 提供所有可用的同步权限,但我无法确定哪个 package/app 正在处理哪个。

有没有办法确定 sync adapters 特定的 app/package handles 或如标题所示,哪个包处理给定的同步适配器?

感谢您对此的任何帮助。

其实很简单,我只是把整个事情搞错了,试图从同步适配器中找出包,而包的所有组件都在其 PackageInfo 中定义!

下面的代码会发现所有包提供者都是给定包的同步适配器 (pkg_name):

            SyncAdapterType[] types = ContentResolver.getSyncAdapterTypes();
            int J = types.length;

            PackageInfo pi = pm.getPackageInfo(pkg_name, PackageManager.GET_PROVIDERS);
            if (pi.providers != null)
            {
                int I = pi.providers.length;
                for(int i = 0; i < I; i++)
                {
                    ProviderInfo p = pi.providers[i];
                    for(int j = 0; j < J; j++)
                    {
                        SyncAdapterType sat = types[j];

                        if (p.authority.equals(sat.authority))
                        {
                            // This provider is a sync adapter

以上代码需要特定权限:

<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />