В настоящее время я пытаюсь преобразовать существующее приложение в приложение в стиле Android-Bundle.Я уже его модульная, все отлично работает вместе, но дополнительные модули (как динамические функции) не устанавливаются должным образом.
После входа в систему я хочу установить недостающие модули.Выглядит это так:
public void installModules(int rechthoehe, final Activity ac){
if(rechthoehe>=1){
System.out.println("INSTALL schueler");
installModule("schueler",ac);
}
if(rechthoehe>=2){
System.out.println("INSTALL lehrer");
installModule("lehrer",ac);
}
if(rechthoehe>=3){
System.out.println("INSTALL itteam");
installModule("itteam",ac);
}
}
public void installModule(final String moduleName, final Activity ac){
final ProgressDialog dialog = new ProgressDialog(ac);
dialog.setTitle(ac.getString(www.amg_witten.de.apptest.R.string.module_download_dialog_title));
dialog.setMessage(ac.getString(www.amg_witten.de.apptest.R.string.module_download_dialog_pending));
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
dialog.show();
SplitInstallManager splitInstallManager = SplitInstallManagerFactory.create(ac);
SplitInstallRequest request = SplitInstallRequest.newBuilder()
.addModule(moduleName)
.build();
SplitInstallStateUpdatedListener listener = new SplitInstallStateUpdatedListener() {
@Override
public void onStateUpdate(final SplitInstallSessionState state) {
switch (state.status()){
case SplitInstallSessionStatus.DOWNLOADING:
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.setMessage(ac.getString(R.string.module_download_dialog_downloading));
dialog.setMax((int) state.totalBytesToDownload());
dialog.setProgress((int) state.bytesDownloaded());
}
});
break;
case SplitInstallSessionStatus.DOWNLOADED:
dialog.setMessage(ac.getString(R.string.module_download_dialog_downloaded));
dialog.setMax(0);
dialog.setProgress(0);
break;
case SplitInstallSessionStatus.INSTALLING:
dialog.setMessage(ac.getString(R.string.module_download_dialog_installing));
dialog.setIndeterminate(true);
break;
}
}
};
splitInstallManager.registerListener(listener);
splitInstallManager.startInstall(request)
.addOnSuccessListener(new OnSuccessListener<Integer>(){
@Override
public void onSuccess(Integer integer) {
System.out.println("SUCCESS at "+moduleName+"!!!"+integer);
SplitInstallManager splitInstallManager =
SplitInstallManagerFactory.create(ac);
Set<String> installedModules = splitInstallManager.getInstalledModules();
System.out.println("AfterInstall after "+moduleName+Arrays.deepToString(installedModules.toArray()));
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
e.printStackTrace();
if(e instanceof SplitInstallException){
System.out.println(((SplitInstallException) e).getErrorCode());
System.out.println(e.getCause());
}
}
});
}
Выводит следующее:
2019-06-11 12:29:24.512 8496-8496/? I/System.out: INSTALL schueler
2019-06-11 12:29:24.542 8496-8496/? I/System.out: INSTALL lehrer
2019-06-11 12:29:24.563 8496-8496/? I/System.out: INSTALL itteam
2019-06-11 12:29:24.704 8496-8496/? I/System.out: SUCCESS at schueler!!!0
2019-06-11 12:29:24.707 8496-8496/? I/System.out: AfterInstall after schueler[schueler, lehrer]
2019-06-11 12:29:24.708 8496-8496/? I/System.out: SUCCESS at lehrer!!!0
2019-06-11 12:29:24.713 8496-8496/? I/System.out: AfterInstall after lehrer[schueler, lehrer]
2019-06-11 12:29:24.987 8496-8496/? I/System.out: 3
2019-06-11 12:29:24.990 8496-8496/? I/System.out: Starting..[schueler, lehrer]
2019-06-11 12:29:25.761 8496-8496/? I/System.out: SUCCESS at itteam!!!12
2019-06-11 12:29:25.767 8496-8496/? I/System.out: AfterInstall after itteam[schueler, lehrer]
Как видите, модуль itteam не был установлен.Два других модуля также не устанавливались из этой функции, я вошел как rechthoehe=2
(Lehrer), а затем обновил приложение.
Спасибо за любую помощь!