Roy*_*ley 3 android android-contentresolver
我已阅读有关Android ContentResolver的文档
我也搜索了一个合适的例子无济于事.
根据文档,call当标准内容提供程序方法不足时,有一种方法可用作访问自定义提供程序方法的方法:
final Bundle call(Uri uri, String method, String arg, Bundle extras)
Call a provider-defined method.
Run Code Online (Sandbox Code Playgroud)
所以在我的代码中我执行:
getContentResolver().call(uri, method, arg, extras);
Run Code Online (Sandbox Code Playgroud)
但它总是返回 null 捆绑.实际上,提供程序中的方法永远不会被调用.
进一步的研究指出合同的(感知的)差异,其中RESOLVER具有uri参数而没有等效的PROVIDER参数:
Bundle call(String method, String arg, Bundle extras)
Call a provider-defined method.
Run Code Online (Sandbox Code Playgroud)
我显然不理解某事.谁能指出我正确的方向?
进一步的研究指出合同的差异,其中RESOLVER具有uri参数而没有等效的PROVIDER参数
这就是他们写作的方式.这Uri只是为了识别ContentProvider- ContentProvider知道它是谁,因此不需要Uri.
提供者方法不允许@Override注释
是的,正如您在此示例中ContentProvider所看到的那样:
@Override
public Bundle call(String method, String arg, Bundle extras) {
if (SET_KEY_METHOD.equals(method) && arg != null) {
key=arg;
}
return(null);
}
Run Code Online (Sandbox Code Playgroud)
但是,您的构建目标(例如,在Eclipse中,项目>属性> Android)必须设置为API级别11或更高级别.
相应的call(),从客户端的样子:
getContentResolver().call(Provider.Constants.CONTENT_URI,
Provider.SET_KEY_METHOD, "sekrit", null);
Run Code Online (Sandbox Code Playgroud)
是.我在提供程序中有一个声明为'public'的方法,该方法被传递给contentresolver参数'method'.
这不是它的工作原理.call()在ContentResolver电话call()上你ContentProvider.
| 归档时间: |
|
| 查看次数: |
6607 次 |
| 最近记录: |