3

当我打电话一个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

这些项目:

Android使用所谓ContentResolverContentProvider这又处理持久性的功能进行沟通 - 访问数据库。

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_URIContentProvider

  • 我是否缺少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”。

回答

3

我已经解决了这个问题:

这两个项目都有相同的包结构。我将de.harm.android.couchone更改为de.harm.android.couchone.providerde.harm.android.couchone.client

相关问题