1 package org.robolectric.manifest; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Map; 6 7 /** 8 * Holds parsed service data from manifest. 9 */ 10 public class ServiceData extends PackageItemData { 11 12 private static final String EXPORTED = "android:exported"; 13 private static final String NAME = "android:name"; 14 private static final String PERMISSION = "android:permission"; 15 16 private final Map<String, String> attributes; 17 private final List<String> actions; 18 private List<IntentFilterData> intentFilters; 19 ServiceData( Map<String, String> attributes, MetaData metaData, List<IntentFilterData> intentFilters)20 public ServiceData( 21 Map<String, String> attributes, MetaData metaData, List<IntentFilterData> intentFilters) { 22 super(attributes.get(NAME), metaData); 23 this.attributes = attributes; 24 this.actions = new ArrayList<>(); 25 this.intentFilters = new ArrayList<>(intentFilters); 26 } 27 getActions()28 public List<String> getActions() { 29 return actions; 30 } 31 addAction(String action)32 public void addAction(String action) { 33 this.actions.add(action); 34 } 35 setPermission(final String permission)36 public void setPermission(final String permission) { 37 attributes.put(PERMISSION, permission); 38 } 39 getPermission()40 public String getPermission() { 41 return attributes.get(PERMISSION); 42 } 43 44 /** 45 * Get the intent filters defined for the service. 46 * 47 * @return A list of intent filters. 48 */ getIntentFilters()49 public List<IntentFilterData> getIntentFilters() { 50 return intentFilters; 51 } 52 53 /** 54 * Get the map for all attributes defined for the service. 55 * 56 * @return map of attributes names to values from the manifest. 57 */ getAllAttributes()58 public Map<String, String> getAllAttributes() { 59 return attributes; 60 } 61 62 /** 63 * Returns whether this service is exported by checking the XML attribute. 64 * 65 * @return true if the service is exported 66 */ isExported()67 public boolean isExported() { 68 boolean defaultValue = !intentFilters.isEmpty(); 69 return (attributes.containsKey(EXPORTED) 70 ? Boolean.parseBoolean(attributes.get(EXPORTED)) 71 : defaultValue); 72 } 73 } 74