Android 内容提供商,内容筛选器URI。。。如何正确地形成过滤URI?
我有几个问题与在应用程序中实现过滤有关(即,SQLite数据库、使用内容提供程序、在未使用过滤时使用内容URI,或者通过连接内容过滤器URI和Android 内容提供商,内容筛选器URI。。。如何正确地形成过滤URI?,android,uri,android-contentprovider,Android,Uri,Android Contentprovider,我有几个问题与在应用程序中实现过滤有关(即,SQLite数据库、使用内容提供程序、在未使用过滤时使用内容URI,或者通过连接内容过滤器URI和mCurFilter变量的内容来形成过滤URI) 首先,我需要确认,我正确理解了过滤URI。之前,我确实使用了内容URI,并在创建新游标加载程序(…)时设置了选择,选择项,以及排序器)在实现LoaderManager.LoaderCallbacks的活动的onCreateLoader方法中。我不明白为什么其他人使用特殊的内容过滤器URI 官方示例为sele
mCurFilter
变量的内容来形成过滤URI)
首先,我需要确认,我正确理解了过滤URI。之前,我确实使用了内容URI
,并在创建新游标加载程序(…)时设置了选择
,选择项
,以及排序器
)
在实现LoaderManager.LoaderCallbacks
的活动的onCreateLoader
方法中。我不明白为什么其他人使用特殊的内容过滤器URI
官方示例为selectionArgs
传递null
,过滤器值可能被提取为filter=uri.getLastPathSegment();
和added用于selectionArgs
。在我的例子中,我也将null
传递给选择
,并在内容提供者中形成它,如:
selection = ProductTable.COLUMN_NAME + " like ?";
selectionArgs = new String[]{ "%" + filter +"%" };
我现在的理解是:
- 筛选器值也可以用于其他方式,而不是简单地放在一个简单的SQL命令中,这就是使用
的原因CONTENT\u filter\u URI
使获取信息变得更抽象,即更少特定于SQL,更像web服务访问数据CONTENT\u FILTER\u URI
sortOrder
也没有以某种方式在URI中表达。这是一种折衷吗?(我希望官方示例不会采取草率的方法,并且有真正的理由在内容提供商之外形成select
参数。)
我应该总是解析用户输入的筛选值吗?原因是用户可以输入任何筛选值——也可以插入禁止字符。这样可以形成未知的URI路径,并且可能无法识别URI。或者更糟糕的是,可能会进行某种SQL注入,或者至少是应用程序ion可能会崩溃。我在考虑URI和注入错误时是否过于偏执?是否有一些规则或工具在或在其他地方提到过,与此问题相关