当我打电话一个Android的ContentProvider我得到以下异常:创建和使用的ContentProvider为Android
了java.lang.RuntimeException:无法 开始活动 ComponentInfo {de.harm.android.couchone /日.harm.android.couchone.CouchContactClient}: java.lang.IllegalArgumentException异常: 未知的URL 内容://de.harm.android.couchone.provider/test2
这些项目:
- https://github.com/der-harm/CouchOneProvider
- .../CouchOneContacts
Android使用所谓ContentResolver
与ContentProvider
这又处理持久性的功能进行沟通 - 访问数据库。
ContentProvider
注册一个独特的Uri。 ContentResolver
使用此Uri调用ContentProvider
并传递其他数据,如SQL查询字符串和/或要保存的数据。
在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);
}
和
public static boolean isCollectionUri(Uri uri) {
return uriMatcher.match(uri) == URI_COLLECTION;
}
处理所使用的ContentResolver
调用的CONTENT_URI
ContentProvider
:
- 我是否缺少
AndroidManifest.xml
中的任何一个的权限? - 我在错误地定义
AndroidManifest.xml
中的权限? - 是
CONTENT_URI
错?
更新:
我有额外的信息:
logcat的说:
未能找到 提供信息de.harm.android.couchone.provider
This shoul d是起点。但到目前为止,我找不到任何解决方案。
的ContentProvider
实现的完全限定类名是:
de.harm.android.couchone.Provider
在AndroidManifext.xml
正是这一点被指定为权威,除了名称为小写,但是这应该是罚款。
软件包名称是以前在xml文件中定义的,所以“.Provider”也应该可以。
至于在异常中可以看出,客户端调用:
content://de.harm.android.couchone.provider/test2
Logcats答案是:
未能找到de.harm.android.couchone.provider
供应商信息
我没有看到缺少的东西,可能是Eclipse或模拟器问题?
我将提供程序安装为“run project as Android application”。