如何获取特定包的所有同步适配器 (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" />
我正在尝试确定已安装应用程序提供的 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" />