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

问题描述

我正在尝试开发一个设备管理应用程序,该应用程序可以在没有任何用户交互的情况下进行自我更新。 我正在使用没有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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...