【发布时间】:2015-04-14 14:45:42
【问题描述】:
我正在编写一个将查询其他应用程序的 ContentProviders 的应用程序。我遇到了一个问题,因为在给定 ProviderInfo 的情况下,我无法获取其他应用程序的 ContentProvider 的 URI。到目前为止,我有以下函数接收 ProviderInfo 对象,但我不知道如何找到它的可用 URI 进行查询。调用 provider.authority 是不够的,因为它没有指定要查询的后缀表名。其他应用程序能够做到这一点,例如 ContentProviderHelper (https://github.com/jenzz/ContentProviderHelper),但我无法完全找到他们在代码中是如何做到这一点的。
有人遇到过这种情况吗?
public String[] getContentProviderColumnNames(ProviderInfo provider){
Uri u = Uri.parse("content://"+provider.authority);//How do i get the complete URI?
ContentResolver resolver = getActivity().getContentResolver();
//below fails of course because the URI is invalid
Cursor c = resolver.query(u, null, null, null, null);
//Todo: for each found uri (tablename), query it using getColumnName
//Get column names
int colCount = c.getColumnCount();
String[] columnNames = new String[colCount];
for (int i = 0; i<colCount; i++) {
columnNames[i] = c.getColumnName(i);
}
return columnNames;
}
谢谢
【问题讨论】:
标签: android android-contentprovider