简体   繁体   English

静默更新设备所有者托管的android应用(在信息亭模式下)

[英]Update a device owner managed android app silently (in kiosk mode)

I have created a device owner app. 我创建了一个设备所有者应用程序。 It can turn an app installed already into Kiosk Mode, I am trying to update the kiosk app remotely, not from playstore, but it's not getting updated. 它可以使已安装的应用程序进入Kiosk模式,我正在尝试远程更新Kiosk应用程序,而不是从playstore进行更新,但是它没有得到更新。 Could anyone please help me with some pointers? 有人可以帮我一些指点吗?

You have to host your apk on your server and then download it based on any conditions that you specify. 您必须将apk托管在服务器上,然后根据您指定的任何条件将其下载。 You can then use this code to update your app. 然后,您可以使用此代码来更新您的应用。

public static boolean InstallAPK(Context context, String apk_file_name) {
        try {

            File apkfile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + apk_file_name);
            if (apkfile.exists()) {

                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));
                return true;
            } else
                return false;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

private static IntentSender createIntentSender(Context context, int sessionId) {
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                context,
                sessionId,
                new Intent(ACTION_INSTALL_COMPLETE),
                0);
        return pendingIntent.getIntentSender();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 更新处于 KIOSK 模式的托管 Google Play 应用 - Update Managed Google Play app that is in KIOSK mode 从Android Lollipop中的设备所有者应用程序启动Kiosk模式中的另一个应用程序 - Launch another app in Kiosk Mode from a device owner app in Android Lollipop 设备所有者Android应用程序的OTA更新(Kiosk模式) - OTA updates for Device Owner Android Application(Kiosk mode) 创建没有设备所有者或 root 的自助服务终端应用程序 - Create kiosk app without device owner or root 在Android上更新设备所有者应用的政策 - Update policy on a device owner app on Android 适用于Android应用程序的NativeScript中的信息亭模式 - Kiosk mode in NativeScript for Android App 如何在Kiosk模式下运行Android应用程序,禁用安全模式并阻止设备进行硬重置? - How to run an Android App in Kiosk Mode, keep Safe Mode disabled and prevent the device from Hard Reset? 设备所有者、信息亭和 Google EMM - Device owner, kiosk and Google EMM Kiosk模式下的Appcelerator Android应用程序(startLockTask) - Appcelerator Android app on Kiosk mode (startLockTask) Android信息亭模式应用-运行状态栏 - Android kiosk mode app - running status bar
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM