gpt4 book ai didi

android - 将 UriMatcher 与 ConentProvider 一起使用时如何解析查询参数

转载 作者:行者123 更新时间:2023-11-29 20:41:46 25 4
gpt4 key购买 nike

我有一个 ConentProvider 并使用 UriMatcher 来执行适当的SQL 语句。

代码有效,但我不喜欢从中提取参数的方式uri 的:

这是失败的:

String badge_id = uri.getQueryParameter("id");
String badge_value = uri.getQueryParameter("badge");

,而且会很理想。

获取参数的正确/最佳方式是什么?我的 uri 匹配器在工作吗?

电话:

Uri uri = Uri.parse("content://" + USERSSchema.AUTHORITY
+ "/" + USERSSchema.USERSTable.TABLE_USERS + "/id/" + String.valueOf(badgeId) + "/badge/" + String.valueOf(badgeValue));

getApplication().getApplicationContext().getContentResolver().update(uri,null,null,null);

接收者:

    private static final int USERS_UPDATE_ORDER_BY_ID = 1;
private static final int USERS_CHANGE_ORDER_BY_ORDER = 2;
private static final int USERS_CHANGE_BADGE = 3;


uriMatcher.addURI(USERSSchema.AUTHORITY,USERSSchema.USERSTable.TABLE_USERS
+ "/from_id/#/to_id/#", USERS_UPDATE_ORDER_BY_ID);



uriMatcher.addURI(USERSSchema.AUTHORITY,USERSSchema.USERSTable.TABLE_USERS
+ "/from_order/#/to_order/#", USERS_CHANGE_ORDER_BY_ORDER);


uriMatcher.addURI(USERSSchema.AUTHORITY,USERSSchema.USERSTable.TABLE_USERS
+ "/id/#/badge/#", USERS_CHANGE_BADGE);



@Override
public int update(Uri uri, ContentValues contentValues, String selection, String[] selectionArgs) {

switch (uriMatcher.match(uri)) {

case USERS_UPDATE_ORDER_BY_ID :
// ....
break:

case USERS_CHANGE_ORDER_BY_ORDER:
// ....
break;
case USERS_CHANGE_BADGE :

String badge_id = uri.getQueryParameter("id");
String badge_value = uri.getQueryParameter("badge");

**//WHAT IS THE BETTER WAY?**
int badge_segment = 0;
for (String segment : uri.getPathSegments()) {
switch (badge_segment++) {
case 2 :
badge_id = segment;
break;
case 4 :
badge_value = segment;
break;
}
}

break;

最佳答案

看起来您混淆了传统意义上的查询参数,以及像 Symfony 这样的框架处理它们的方式。

Uri.getQueryParameter 查找查询字符串 (content://demo?key=value)。要从路径内部获取参数,请使用 Uri.getPathSegments()。

关于android - 将 UriMatcher 与 ConentProvider 一起使用时如何解析查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com