Android - динамическая функция не устанавливается - PullRequest
0 голосов
/ 11 июня 2019

В настоящее время я пытаюсь преобразовать существующее приложение в приложение в стиле 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), а затем обновил приложение.

Спасибо за любую помощь!

...