code: def get_uses_implied_permission_list(self):
          
          target_sdk_version = self.get_effective_target_sdk_version()
  
          READ_CALL_LOG = 'android.permission.READ_CALL_LOG'
          READ_CONTACTS = 'android.permission.READ_CONTACTS'
          READ_EXTERNAL_STORAGE = 'android.permission.READ_EXTERNAL_STORAGE'
          READ_PHONE_STATE = 'android.permission.READ_PHONE_STATE'
          WRITE_CALL_LOG = 'android.permission.WRITE_CALL_LOG'
          WRITE_CONTACTS = 'android.permission.WRITE_CONTACTS'
          WRITE_EXTERNAL_STORAGE = 'android.permission.WRITE_EXTERNAL_STORAGE'
  
          implied = []
  
          implied_WRITE_EXTERNAL_STORAGE = False
          if target_sdk_version < 4:
              if WRITE_EXTERNAL_STORAGE not in self.permissions:
                  implied.append([WRITE_EXTERNAL_STORAGE, None])
                  implied_WRITE_EXTERNAL_STORAGE = True
              if READ_PHONE_STATE not in self.permissions:
                  implied.append([READ_PHONE_STATE, None])
  
          if (WRITE_EXTERNAL_STORAGE in self.permissions or implied_WRITE_EXTERNAL_STORAGE) \
             and READ_EXTERNAL_STORAGE not in self.permissions:
              maxSdkVersion = None
              for name, version in self.uses_permissions:
                  if name == WRITE_EXTERNAL_STORAGE:
                      maxSdkVersion = version
                      break
              implied.append([READ_EXTERNAL_STORAGE, maxSdkVersion])
  
          if target_sdk_version < 16:
              if READ_CONTACTS in self.permissions \
                 and READ_CALL_LOG not in self.permissions:
                  implied.append([READ_CALL_LOG, None])
              if WRITE_CONTACTS in self.permissions \
                 and WRITE_CALL_LOG not in self.permissions:
                  implied.append([WRITE_CALL_LOG, None])
  
          return implied
docs: Return all permissions implied by the target SDK or other permissions.
  
              :rtype: list of string