繁体   English   中英

如何获取特定程序包的所有同步适配器(类型/权限)

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

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

使用AccountManager.getAccountsByType仅提供帐户,完全不提供授权或程序包信息。

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

有没有一种方法可以确定特定app/package handles哪些sync adapters或者如标题中所述,什么程序包处理给定的同步适配器?

感谢您对此的任何帮助。

其实很简单,我只是以错误的方式来处理整个事情,试图从同步适配器中找出包,而包的所有组件都在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" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM