diff --git a/README-en.md b/README-en.md index f330c73..e48a9e0 100644 --- a/README-en.md +++ b/README-en.md @@ -24,7 +24,7 @@ app project build.gradle apply plugin: 'android-apt' dependencies { - compile 'com.github.mzule.activityrouter:activityrouter:1.1.1' + compile 'com.github.mzule.activityrouter:activityrouter:1.1.2' apt 'com.github.mzule.activityrouter:compiler:1.1.1' } ``` diff --git a/README.md b/README.md index f8ebf0f..8d86c7f 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ buildscript { apply plugin: 'android-apt' dependencies { - compile 'com.github.mzule.activityrouter:activityrouter:1.1.1' + compile 'com.github.mzule.activityrouter:activityrouter:1.1.2' apt 'com.github.mzule.activityrouter:compiler:1.1.1' } diff --git a/activityrouter/build.gradle b/activityrouter/build.gradle index 7d74abd..651c267 100644 --- a/activityrouter/build.gradle +++ b/activityrouter/build.gradle @@ -17,7 +17,7 @@ ext { siteUrl = 'https://github.com/mzule/ActivityRouter/' gitUrl = 'https://github.com/mzule/ActivityRouter.git' - libraryVersion = '1.1.1' + libraryVersion = '1.1.2' developerId = 'mzule' developerName = 'Cao Dongping' @@ -33,7 +33,7 @@ android { buildToolsVersion "23.0.2" defaultConfig { - minSdkVersion 11 + minSdkVersion 7 targetSdkVersion 23 versionCode 1 versionName "1.0" diff --git a/activityrouter/src/main/java/com/github/mzule/activityrouter/router/Mapping.java b/activityrouter/src/main/java/com/github/mzule/activityrouter/router/Mapping.java index 556c16a..ff1b1ce 100644 --- a/activityrouter/src/main/java/com/github/mzule/activityrouter/router/Mapping.java +++ b/activityrouter/src/main/java/com/github/mzule/activityrouter/router/Mapping.java @@ -83,7 +83,7 @@ public Bundle parseExtras(Uri uri) { y = y.next(); } // parameter - Set names = uri.getQueryParameterNames(); + Set names = UriCompact.getQueryParameterNames(uri); for (String name : names) { String value = uri.getQueryParameter(name); put(bundle, name, value); diff --git a/activityrouter/src/main/java/com/github/mzule/activityrouter/router/UriCompact.java b/activityrouter/src/main/java/com/github/mzule/activityrouter/router/UriCompact.java new file mode 100644 index 0000000..b5c9bee --- /dev/null +++ b/activityrouter/src/main/java/com/github/mzule/activityrouter/router/UriCompact.java @@ -0,0 +1,46 @@ +package com.github.mzule.activityrouter.router; + +import android.net.Uri; + +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Created by CaoDongping on 6/1/16. + */ +public class UriCompact { + + /** + * Uri#getQueryParameterNames() 不支持 11 以下版本,这个方法提供兼容. + * + * @param uri Uri + * @return Set + */ + public static Set getQueryParameterNames(Uri uri) { + String query = uri.getEncodedQuery(); + if (query == null) { + return Collections.emptySet(); + } + + Set names = new LinkedHashSet(); + int start = 0; + do { + int next = query.indexOf('&', start); + int end = (next == -1) ? query.length() : next; + + int separator = query.indexOf('=', start); + if (separator > end || separator == -1) { + separator = end; + } + + String name = query.substring(start, separator); + names.add(Uri.decode(name)); + // Move start to end of name. + start = end + 1; + } while (start < query.length()); + + return Collections.unmodifiableSet(names); + } + +}