微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使设备管理员应用程序无提示更新自身

如何解决如何使设备管理员应用程序无提示更新自身

我正在尝试开发一个设备管理应用程序,该应用程序可以在没有任何用户交互的情况下进行自我更新。 我正在使用没有Google Play服务的PICO G2 4K。我发现2018年有一个类似的问题,但有相同的问题,但仍然没有答案。 (Here)

当我想安装另一个应用apk时,我的APK安装程序正在运行,但是当涉及到自我更新时,程序包管理器出现错误installd: Failed to delete /data/app/vmdl918144964.tmp: No such file or directory

我认为我拥有所有需要的权限:

    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

其他一切都很好,我可以安装apk,我的管理接收器运行良好,我可以下载到外部存储设备等。 我的APK安装程序真的很基础并且可以正常运行:

        PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
        PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(path,0);
        int sessionId = packageInstaller.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));

        long sizeBytes = 0;

        OutputStream out = null;
        out = session.openWrite("my_app_session",sizeBytes);
        int total = 0;
        byte[] buffer = new byte[65536];
        int c;
        while ((c = inputStream.read(buffer)) != -1) {
            total += c;
            out.write(buffer,c);
        }
        session.fsync(out);
        inputStream.close();
        out.close();

        session.commit(createInstallIntentSender(context,sessionId));
        session.close();

感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。