2010-07-01 169 views
-2

我遇到了内容提供商的问题。我正在尝试创建一个内容提供者。内容提供商

public static final Uri CONTENT_URI = 
       Uri.parse("content://data/data/one.two/databases"); 

,我想从中提取数据,并显示在列表视图这导致我的数据库。 之后,我不得不修改清单插入提供商

<provider android:name="databases789" 
    android:grantUriPermissions="true" 
    android:enabled="true" 
    android:syncable="true" 
    android:authorities="one.two.databases" > 
</provider> 
  1. 有我的URI被正确解析?
  2. 如果我将我的课程扩展到内容提供者,我的数据库文件会有点儿搞砸了,有没有更简单的方法?

但是,它显示不存在one.two.databases的错误。

回答

5

您可能希望从这里开始:

http://developer.android.com/guide/topics/providers/content-providers.html

的一些特殊技巧,以帮助:

首先,你的URI是不是到数据库文件的路径。它以“content://”开头,然后有权限,最后是数据库名称(通常)。

您的权限是您提供的名称,通常您的包名称以'provider'结尾。所以你的可能是one.two.provider。

然后你会在你的项目中创建一个新的类,比如MyProvider.java。按照链接上的示例,了解您的提供者要实际提供数据的操作。

最后,在AndroidManifest.xml文件你会做这样的事情:

<provider 
    android:authorities="one.two.provider" 
    android:name="MyProvider" 
></provider> 

这告诉Android操作系统勾你的权威(one.two.provider)到你的类。

+0

香港专业教育学院创建了自己的内容提供商了。但是,它仍然不起作用,并且不显示我的列表视图。我应该为此写些什么? public static final String CONTENT_TYPE = null; 我不认为它为空。 – UserA 2010-07-02 01:41:05

1

必须在您AndroidManifest.xml指定内容提供者的名称,以自己的ContentProvider

<provider android:name="com.app.MyContentProvider" 
android:grantUriPermissions="true" 
android:enabled="true" 
android:syncable="true" 
android:authorities="com.app.authorities.data" >