当我调用 Android ContentProvider 时,出现以下异常:
java.lang.RuntimeException:无法
开始活动
ComponentInfo{de.harm.android.couchone/de.harm.android.couchone.CouchContactClient}:
java.lang.IllegalArgumentException:
未知网址
内容://de.harm.android.couchone.provider/test2
这些是项目:
- https://github.com/der-harm/CouchOneProvider https://github.com/der-harm/CouchOneProvider
- .../CouchOneContacts
Android使用所谓的ContentResolver
与 沟通ContentProvider
它反过来处理持久性功能 - 访问数据库。
The ContentProvider
使用唯一的 Uri 注册自身。这ContentResolver
称为ContentProvider
使用此 Uri 并传递其他数据,例如 SQL 查询字符串和/或要保存的数据。
In the CouchOneProvider
/AndroidManifest.xml
我有以下内容:
<provider android:authorities="de.harm.android.couchone.provider"
android:name=".Provider" />
提供者使用
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, DB_Name, URI_COLLECTION);
uriMatcher.addURI(PROVIDER_NAME, DB_Name + "/#", URI_ENTITY);
}
and
public static boolean isCollectionUri(Uri uri) {
return uriMatcher.match(uri) == URI_COLLECTION;
}
来处理CONTENT_URI
所使用的ContentResolver
打电话给ContentProvider
:
- 我是否缺少两者中任何一个的权限
AndroidManifest.xml
?
- 我是否定义了权威
AndroidManifest.xml
错?
- Is the
CONTENT_URI
wrong?
Update:
我还有更多信息:
日志猫 说:
无法找到提供商信息
去害.android.couchone.provider
这应该是起点。但到目前为止我找不到任何解决方案。
的完全限定类名ContentProvider
实施是:
de.harm.android.couchone.Provider
In AndroidManifext.xml
正是这被指定为权限,除了名称是小写的,但这应该没问题。
包名称之前已在 xml 文件中定义,因此“.Provider”也应该没问题。
从异常中可以看出,客户端调用:
content://de.harm.android.couchone.provider/test2
Logcats 的答案是:
无法找到 de.harm.android.couchone.provider 的提供商信息
我没有看到缺少什么,也许是 Eclipse 或模拟器问题?
我将提供程序安装为“将项目作为 Android 应用程序运行”。