Genau das habe ich gemacht. Leider lässt sich die Erweiterung nicht einfach so installieren. Sie wird intern durch die Haupt-App heruntergeladen und dann in einem bestimmten Verzeichnis abgelegt. Mit Root käme man dort super einfach ran, könnte einfach die Erweiterung.apk austauschen gegen die übersetzte Variante und fertig. Probleme bereitet somit der fehlende Root-Zugang. Ich kann die Erweiterung zwar übersetzen, bekomme das Paket ohne adb Umweg über den PC aber nicht mal eben einfach in den entsprechenden Ordner im Verzeichnis
Würde ich die Möglichkeit bekommen, auch ohne Root dort die entsprechende Erweiterung.apk abzulegen, würde die Haupt-App dieselbe, aber unübersetzte Erweiterung nicht herunterladen, weil bereits vorhanden. Die in 5224.apk enthaltene eigene strings.xml in mehreren Sprachen wird leider nicht durch die entsprechende strings.xml in der Haupt-App, welche über alle ihre Strings verfügt, vorzogen. Somit ist die Haupt-App deutsch, die Erweiterung chinesisch.
Gibt es denn eine Möglichkeit, die Haupt.apk so zu modifizieren, dass die darin enthaltende Erweiterung.apk (habe ich bereits hinzugefügt und gepackt sowie signiert, ging problemlos) einfach in den entsprechenden Ordner geschoben wird bzw. dieser Ordner 134 einfach bei der Installation mit erzeugt wird und die Erweiterung.apk dort hinein kopiert wird? Die entsprechenden Rechte hat die Haupt.apk doch bei der Installation.
Ginge denn sowas wie das hier? Wie würde man eine solche Kopierprozedur anstoßen, das Codebeispiel betrifft ja wohl nicht Android. Müsste die entsprechende Datei als activity im Manifest nachgetragen werden?
File source = new File("storage/emulated/0/download/5224.apk");
File dest = new File("?/com.xiaomi.smartphone/data/com.xiaomi.smarthome/files/plugin/install/mpk/134/5224.apk");
try {
FileUtils.copyDirectory(source, dest);
} catch (IOException e) {
e.printStackTrace();
}
Könnte ein solcher Prozess dann automatisch ablaufen?
public void copy(File src, File dst) throws IOException {
FileInputStream inStream = new FileInputStream(src);
FileOutputStream outStream = new FileOutputStream(dst);
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
inStream.close();
outStream.close();
}