Попробуйте заменить. * С .product? * Это должно выровнять фильтр только строки запроса продукта, а не продукт URL путь (/ продукт/что-то/другое? ID)
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="myscheme"/>
<data android:host="product"/>
<data android:pathPattern=".product?*"/>
Другим вариантом было бы создание двух намерений фильтров, и поместить их в порядке поступления намерения:
Intent 1: product/something/else
Intent 2: product?id=1
UPDATE: ключевым моментом здесь является использование GetData() не получить дополнительные услуги(). Стало известно, что трудный путь :)
@Override
public void onNewIntent(Intent i) {
super.onNewIntent(i);
Bundle b = i.getExtras();
if (i != null && i.getData() != null) {
try {
Uri data = i.getData();
Map<String, String> a = splitQuery(data);
if (a.containsKey("Product") && a.containsKey("SOMETHINGELSE")){
//todo:something that takes care of something else:
}else if (a.containsKey("Product")){
mItemNumber = a.get("ID");
setUpFragmentForItem(mItemNumber);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
Split URI на следующие сегменты:
public static Map<String, String> splitQuery(Uri url) throws UnsupportedEncodingException {
try {
Map<String, String> query_pairs = new LinkedHashMap<String, String>();
String query = url.getQuery();
String[] pairs = query.split("/");
for (String pair : pairs) {
int idx = pair.indexOf("=");
query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
}
return query_pairs;
} catch (Exception e) {
throw new UnsupportedEncodingException(e.getMessage());
}
}
UPDATE: Нашел библиотека, которая делает то же самое, стоит отметить, не использовали его, но я могу дать это попытка: https://android-arsenal.com/details/1/2072
Спасибо за ввод, но это не сработало. –
Вы имеете в виду, что проблема не устранена, или это заставило функцию не работать вообще? – DoctorD
Это заставило функцию не работать. Ссылка 'product? Id = 1' всегда приводит к игровому магазину, а не к обработке в приложении. –