code: def get_main_activities(self):
          
          x = set()
          y = set()
  
          for i in self.xml:
              if self.xml[i] is None:
                  continue
              activities_and_aliases = self.xml[i].findall(".//activity") + \
                                       self.xml[i].findall(".//activity-alias")
  
              for item in activities_and_aliases:
                  # Some applications have more than one MAIN activity.
                  # For example: paid and free content
                  activityEnabled = item.get(self._ns("enabled"))
                  if activityEnabled == "false":
                      continue
  
                  for sitem in item.findall(".//action"):
                      val = sitem.get(self._ns("name"))
                      if val == "android.intent.action.MAIN":
                          activity = item.get(self._ns("name"))
                          if activity is not None:
                              x.add(item.get(self._ns("name")))
                          else:
                              log.warning('Main activity without name')
  
                  for sitem in item.findall(".//category"):
                      val = sitem.get(self._ns("name"))
                      if val == "android.intent.category.LAUNCHER":
                          activity = item.get(self._ns("name"))
                          if activity is not None:
                              y.add(item.get(self._ns("name")))
                          else:
                              log.warning('Launcher activity without name')
  
          return x.intersection(y)
docs: Return names of the main activities
  
          These values are read from the AndroidManifest.xml
  
          :rtype: a set of str