Фон
У меня есть App-Manager app, что позволяет отправлять файлы APK в другие приложения.
До тех пор, пока Android 4.4 (в том числе), все, что мне нужно было сделать для этой задачи, - это отправить пути к исходным файлам APK (все они были в разделе "/data/app/...", доступный даже без root).
Это код для отправки файлов (доступные документы здесь):
intent=new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("*/*");
final ArrayList<Uri> uris=new ArrayList<>();
for(...)
uris.add(Uri.fromFile(new File(...)));
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
Проблема
Что я делал, так как все APK файлы приложений имели уникальное имя (это было имя пакета).
С тех пор как Lollipop (5.0), все APK файлы приложений просто называются "base.APK", что делает другие приложения неспособными понять их присоединение.
Это означает, что у меня есть некоторые опции для отправки файлов APK. Вот о чем я думал:
-
скопируйте их все в папку, переименуйте их все в уникальные имена и затем отправьте их.
-
сжимайте их все в один файл, а затем отправляйте их. Уровень сжатия может быть минимальным, поскольку файлы APK уже сжаты.
Проблема в том, что мне пришлось бы отправлять файлы как можно быстрее, и если мне действительно нужно иметь эти временные файлы (если только не существует другого решения), также удалите их как можно быстрее.
Дело в том, что я не получаю уведомления, когда сторонние приложения закончили обработку временного файла, и я также думаю, что для выбора нескольких файлов потребуется некоторое время для подготовки независимо от того, что я выбираю.
Другая проблема заключается в том, что некоторые приложения (например, Gmail) фактически запрещают отправку файлов APK.
Вопрос
Есть ли альтернатива решениям, о которых я думал? Может быть, есть способ решить эту проблему со всеми преимуществами, которые у меня были раньше (быстро и без ненужных файлов осталось)?
Может быть, какой-то способ контролировать файл? или создать поток вместо реального файла?
Поможет ли временный файл в папке с кешем?