1b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio/* 2b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Copyright (C) 2010 The Android Open Source Project 3b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * 4b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 5b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * you may not use this file except in compliance with the License. 6b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * You may obtain a copy of the License at 7b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * 8b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 9b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * 10b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 11b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 12b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * See the License for the specific language governing permissions and 14b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * limitations under the License. 15b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio */ 16b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 17b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Megliopackage com.android.providers.calendar; 18b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 19b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglioimport android.net.Uri; 20b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 21b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Megliopublic class QueryParameterUtils { 22b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 23b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio public static boolean readBooleanQueryParameter(Uri uri, String name, 24b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio boolean defaultValue) { 25b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio final String flag = getQueryParameter(uri, name); 26b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio return flag == null 27b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio ? defaultValue 28b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio : (!"false".equals(flag.toLowerCase()) && !"0".equals(flag.toLowerCase())); 29b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 30b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 31b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio // Duplicated from ContactsProvider2. 32b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio /** 33b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio * A fast re-implementation of {@link android.net.Uri#getQueryParameter} 34b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio */ 35b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio public static String getQueryParameter(Uri uri, String parameter) { 36b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio String query = uri.getEncodedQuery(); 37b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio if (query == null) { 38b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio return null; 39b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 40b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 41b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio int queryLength = query.length(); 42b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio int parameterLength = parameter.length(); 43b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 44b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio String value; 45b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio int index = 0; 46b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio while (true) { 47b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio index = query.indexOf(parameter, index); 48b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio if (index == -1) { 49b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio return null; 50b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 51b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 52b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio index += parameterLength; 53b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 54b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio if (queryLength == index) { 55b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio return null; 56b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 57b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 58b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio if (query.charAt(index) == '=') { 59b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio index++; 60b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio break; 61b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 62b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 63b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 64b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio int ampIndex = query.indexOf('&', index); 65b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio if (ampIndex == -1) { 66b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio value = query.substring(index); 67b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } else { 68b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio value = query.substring(index, ampIndex); 69b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 70b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio 71b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio return Uri.decode(value); 72b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio } 73b7c010fdc02695b692cd74acf432e8ccb3bda70cFabrice Di Meglio} 74