Android 当将UriMatcher与ConentProvider一起使用时,如何解析查询参数
我有一个ConentProvider,并使用UriMatcher执行适当的 SQL语句 代码可以工作,但我不喜欢从中提取参数的方式 uri的: 这是失败的:Android 当将UriMatcher与ConentProvider一起使用时,如何解析查询参数,android,sqlite,android-contentprovider,Android,Sqlite,Android Contentprovider,我有一个ConentProvider,并使用UriMatcher执行适当的 SQL语句 代码可以工作,但我不喜欢从中提取参数的方式 uri的: 这是失败的: String badge_id = uri.getQueryParameter("id"); String badge_value = uri.getQueryParameter("badge"); ,而且会是理想的 获取参数的正确/最佳方法是什么 我的uri匹配器正在工作? 电话: Uri uri = Uri.parse("conten
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这样的框架处理它们的方式 getQueryParameter查找查询字符串(content://demo?key=value). 要从路径内部获取参数,请使用Uri.getPathSegments()