[英]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.