Android Contentprovider:如何对其使用引用?

Android Contentprovider:如何对其使用引用?,android,service,android-contentprovider,Android,Service,Android Contentprovider,我想在服务中使用Contentprovider。我已经编写了一个处理程序类来解析JSON并希望在我的contentprovider中插入数据,如何才能为contentprovider提供服务引用?只需从您的服务调用getContentResolver() 这些评论是正确的,但我觉得它们需要详细阐述: 内容提供商,即使是您仅在自己的应用程序中使用的内容提供商,也不是为直接引用而设计的。相反,应用程序应该使用ContentResolver中的方法来访问内容提供商。ContentResolver具有与

我想在服务中使用Contentprovider。我已经编写了一个处理程序类来解析JSON并希望在我的contentprovider中插入数据,如何才能为contentprovider提供服务引用?

只需从您的服务调用
getContentResolver()

这些评论是正确的,但我觉得它们需要详细阐述:

内容提供商,即使是您仅在自己的应用程序中使用的内容提供商,也不是为直接引用而设计的。相反,应用程序应该使用ContentResolver中的方法来访问内容提供商。ContentResolver具有与您必须为ContentProvider实现的方法(其抽象方法)相同的方法集。例如,如果要将数据插入ContentProvider,请调用getContentResolver().insert()。ContentResolver是一个通用对象,用于与内容提供商、文件提供商和同步适配器框架进行通信

在应用程序中定义内容提供商时,必须在清单中定义其权限值,还必须编写解释传入内容URI的代码。使用内容URI的最佳方法是首先使用表单为提供者中的每个表分配一个单独的内容URI

content://*authority*/*path*
Authority是您在清单中指定的权限字符串;事实上的标准是使用应用程序的包名,并在其后面附加“.provider”。路径是它所表示的表的描述性术语。例如:

content://com.example.android.myapp.provider/sales
指向提供商中的销售表。如果你想的话,你可以做得更好,但是大多数开发人员都会用这个方案来满足他们的需求


要使用内容提供商中的内容URI,请使用android.content.UriMatcher类。

context.getContentResolver()?我以为ContentResolver只在活动中使用,但在那里我使用加载程序。我试过了。服务有一个getContentResolver()方法。所以你们三个是对的。谢谢ContentResolver几乎可以用于任何内容。游标装入器是查询的首选工具,但简单查询和其他操作不一定需要游标装入器。getContentResolver()实际上是上下文类的一个方法,所以从android.content.Context继承的任何组件类(如服务)都将具有getContentResolver()。如果您的对象不继承上下文(例如,Fragment),那么您的对象通常有一个方法来获取确实继承的对象(例如,Fragment.getActivity())。