首页 > 解决方案 > 自助服务终端应用程序更新和重启

问题描述

我在 Android 7 或 9 上有一个自助服务终端应用程序,它是带有固定屏幕的设备所有者。我下载了新版本的应用程序 (.apk) 并在我的信息亭应用程序中使用 PackageInstaller 安装它:

           FileInputStream in = new FileInputStream(apkfile);

            PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
            PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
                    PackageInstaller.SessionParams.MODE_FULL_INSTALL);
            params.setAppPackageName(context.getPackageName());
            // set params
            int sessionId = packageInstaller.createSession(params);
            PackageInstaller.Session session = packageInstaller.openSession(sessionId);
            OutputStream out = session.openWrite("COSU", 0, -1);
            byte[] buffer = new byte[65536];

            int c;
            while ((c = in.read(buffer)) != -1) {
                out.write(buffer, 0, c);
            }
            session.fsync(out);
            in.close();
            out.close();
            session.commit(createIntentSender(context, sessionId));

这将关闭我当前正在运行的信息亭应用程序。当我再次手动运行它时,我可以看到它已更新。但是,我不希望我的信息亭应用程序被关闭,它必须在安装更新的 apk 时自动重新启动。安装更新后如何重新启动我的自助服务终端应用程序?

我已经尝试过广播 MY_PACKAGE_REPLACED、PACKAGE_REMOVED、PACKAGE_ADDED、PACKAGE_REPLACED,但我的信息亭应用程序从未在其 BroadcastReceiver 中接收到它们。

标签: androidbroadcastreceiver

解决方案


该问题是由联想平板电脑引起的。您必须为您的应用启用应用 -> 设置 -> 后台应用刷新。否则 ACTION_MY_PACKAGE_REPLACED 不起作用。更多信息:https ://forums.lenovo.com/t5/Lenovo-Android-based-Tablets-and/Tab-4-7-Essentials-autostart-disabled/mp/3840211


推荐阅读