Хорошо, сейчас я нашел обходной путь (и это помогло мне также подтвердить точную проблему - проблема была в том, что установщик не мог получить доступ к файлу apk ). Теперь я использую MODE_WORLD_READABLE вместо MODE_PRIVATE при сохранении файла во внутреннем хранилище, и установщик Android может получить доступ к apk и установить его без каких-либо ошибок.
На самом деле, для меня основная цель использования внутреннего хранилища состояла в том, чтобы пользователи не могли напрямую копировать файл apk (предполагая простую модель угрозы, при которой у пользователя нет рутированного телефона, но он может просматривать SD-карту, чтобы найти apk и скопировать его). Хотя я все еще не уверен, виден ли файл пользователю сейчас или нет? Я имею в виду, что я (почти) в порядке, если к загруженному apk можно получить доступ из приложения в телефоне, но пользователь не может скопировать его напрямую.
Было бы полезно, если бы кто-то, зная точную область действия MODE_WORLD_READABLE, мог уточнить то же самое, в частности, можно ли просматривать файл, сохраненный в этом режиме, в (нерутированном) телефоне. Кроме того, возможно ли иметь лучшую стратегию для защиты apk, в то же время позволяя установщику получить к нему доступ?