private boolean matchIntentFilter(ActivityData activityData, Intent intent) { for (IntentFilterData intentFilterData : activityData.getIntentFilters()) { List<String> actionList = intentFilterData.getActions(); List<String> categoryList = intentFilterData.getCategories(); IntentFilter intentFilter = new IntentFilter(); for (String action : actionList) { intentFilter.addAction(action); } for (String category : categoryList) { intentFilter.addCategory(category); } for (String scheme : intentFilterData.getSchemes()) { intentFilter.addDataScheme(scheme); } for (String mimeType : intentFilterData.getMimeTypes()) { try { intentFilter.addDataType(mimeType); } catch (IntentFilter.MalformedMimeTypeException ex) { throw new RuntimeException(ex); } } for (String path : intentFilterData.getPaths()) { intentFilter.addDataPath(path, PatternMatcher.PATTERN_LITERAL); } for (String pathPattern : intentFilterData.getPathPatterns()) { intentFilter.addDataPath(pathPattern, PatternMatcher.PATTERN_SIMPLE_GLOB); } for (String pathPrefix : intentFilterData.getPathPrefixes()) { intentFilter.addDataPath(pathPrefix, PatternMatcher.PATTERN_PREFIX); } for (IntentFilterData.DataAuthority authority : intentFilterData.getAuthorities()) { intentFilter.addDataAuthority(authority.getHost(), authority.getPort()); } // match action boolean matchActionResult = intentFilter.matchAction(intent.getAction()); // match category String matchCategoriesResult = intentFilter.matchCategories(intent.getCategories()); // match data int matchResult = intentFilter.matchData( intent.getType(), (intent.getData() != null ? intent.getData().getScheme() : null), intent.getData()); if (matchActionResult && (matchCategoriesResult == null) && (matchResult != IntentFilter.NO_MATCH_DATA && matchResult != IntentFilter.NO_MATCH_TYPE)) { return true; } } return false; }