Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 内容提供商,内容筛选器URI。。。如何正确地形成过滤URI?_Android_Uri_Android Contentprovider - Fatal编程技术网

Android 内容提供商,内容筛选器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

我有几个问题与在应用程序中实现过滤有关(即,SQLite数据库、使用内容提供程序、在未使用过滤时使用内容URI,或者通过连接内容过滤器URI和
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
    的原因
  • CONTENT\u FILTER\u URI
    使获取信息变得更抽象,即更少特定于SQL,更像web服务访问数据
关于这一点,我仍然不明白为什么
sortOrder
也没有以某种方式在URI中表达。这是一种折衷吗?(我希望官方示例不会采取草率的方法,并且有真正的理由在内容提供商之外形成
select
参数。)

我应该总是解析用户输入的筛选值吗?原因是用户可以输入任何筛选值——也可以插入禁止字符。这样可以形成未知的URI路径,并且可能无法识别URI。或者更糟糕的是,可能会进行某种SQL注入,或者至少是应用程序ion可能会崩溃。我在考虑URI和注入错误时是否过于偏执?是否有一些规则或工具在或在其他地方提到过,与此问题相关