Android ContentProvider,带空格的 URI(YYYY-MM-DD 中的日期 HH:MM:SS)
Android ContentProvider, URI with spaced (Date in YYYY-MM-DD HH:MM:SS)
我考虑将 String 解析为可与 ContentProvider 一起使用的 Uri 的最佳做法。此 Uri 应包含格式为 YYYY-MM-DD HH:MM:SS 的日期时间。
'content://authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS'
我可以在这个日期String.replace(' ', '+');
然后 uri.getPathSegments().get(4).replace('+', ' ')
但也许有更好的方法来解决这个问题?
在 ContentProvider.update()
中,UriMatcher 似乎不匹配此类 URI
content://com.xxx.provider.XXXProvider/learning_stats/profile/1/access_date/2015-04-08+11:40:24
这是我的 UriMatcher 定义:
uriMatcher.addURI(AUTHORITY, BASE_PATH + "/profile/#/access_date/#", ROW_FOR_PROFILE_AND_ACCESS_DATE);
首先,在UriMatcher中,“#”表示数字,“*”表示文本或精确。查看/frameworks/base/core/java/android/content/UriMatcher.java
中的源代码
我认为没有必要进行替换,Uri Builder 会对您的日期字符串进行编码,
Uri uri = new Uri.Builder().scheme("content").path("/authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS").build();
String date = uri.getPathSegments().get(5);
编码路径是,
/authority/basepath/someId/12/date/YYYY-MM-DD%20HH%3AMM%3ASS
如你所见,字符':'也应该被替换,那么解码路径是,
/authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS
或者使用从 Date.getTime()
返回的毫秒值而不是日期字符串。
'content://authority/basepath/someId/12/date/12345434'
getTime()
Returns 此日期为毫秒值。该值是自格林威治标准时间 1970 年 1 月 1 日午夜以来的毫秒数。
解析时间很简单,
Date time = new Date(12345434l);//12345434 is the value from URI.
我考虑将 String 解析为可与 ContentProvider 一起使用的 Uri 的最佳做法。此 Uri 应包含格式为 YYYY-MM-DD HH:MM:SS 的日期时间。
'content://authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS'
我可以在这个日期String.replace(' ', '+');
然后 uri.getPathSegments().get(4).replace('+', ' ')
但也许有更好的方法来解决这个问题?
在 ContentProvider.update()
中,UriMatcher 似乎不匹配此类 URIcontent://com.xxx.provider.XXXProvider/learning_stats/profile/1/access_date/2015-04-08+11:40:24
这是我的 UriMatcher 定义:
uriMatcher.addURI(AUTHORITY, BASE_PATH + "/profile/#/access_date/#", ROW_FOR_PROFILE_AND_ACCESS_DATE);
首先,在UriMatcher中,“#”表示数字,“*”表示文本或精确。查看/frameworks/base/core/java/android/content/UriMatcher.java
中的源代码我认为没有必要进行替换,Uri Builder 会对您的日期字符串进行编码,
Uri uri = new Uri.Builder().scheme("content").path("/authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS").build();
String date = uri.getPathSegments().get(5);
编码路径是,
/authority/basepath/someId/12/date/YYYY-MM-DD%20HH%3AMM%3ASS
如你所见,字符':'也应该被替换,那么解码路径是,
/authority/basepath/someId/12/date/YYYY-MM-DD HH:MM:SS
或者使用从 Date.getTime()
返回的毫秒值而不是日期字符串。
'content://authority/basepath/someId/12/date/12345434'
getTime()
Returns 此日期为毫秒值。该值是自格林威治标准时间 1970 年 1 月 1 日午夜以来的毫秒数。
解析时间很简单,
Date time = new Date(12345434l);//12345434 is the value from URI.