以编程方式静默安装 APK

对不起,我的英语不好。我想弄清楚如何以编程方式在没有 root 的情况下静默安装(或删除)APK 文件。


首先我添加android:sharedUserId="android.uid.system"到清单和权限


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <uses-permission

        android:name="android.permission.INSTALL_PACKAGES"

        tools:ignore="ProtectedPermissions" />

    <uses-permission android:name="android.permission.DELETE_PACKAGES" tools:ignore="ProtectedPermissions"/>

安装和删除代码


    public void installApp(File file){

        try {

            final String command = "pm install " + file.getPath();

            Process proc = Runtime.getRuntime().exec(new String[] {command });

            proc.waitFor();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }


    public void deleteApp(String appPackage){

        try {

            final String command = "pm uninstall " + appPackage;

            Process proc = Runtime.getRuntime().exec(new String[] {command });

            proc.waitFor();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

据我所知,我需要制造商密钥来签署我的应用程序。我没有找到 Android Studio 模拟器的密钥,所以例如我从这里下载了 Android 4.4 r2 的图像http://www.android-x86.org/releases/releasenote-4-4-r2(并将它安装在Oracle VM)并从这里获得密钥https://sourceforge.net/p/android-x86/build/ci/android-x86-4.4-r2/tree/target/product/security/。据我所知platform.x509.pem,platform.pk8关键是什么我需要。


我用signapk.jar这样的东西签署了我的应用程序java -jar signapk.jar platform.x509.pem platform.pk8 app.apk signapp.apk。


一些已签名的 apk 不想安装时出现错误,App conflicts with existing package by the same name或者我的设备与此 Apk 不兼容,但没有签名就一切正常。

我尝试过不同的图像、密钥对和模拟器,但没有成功,我做错了什么?


繁花不似锦
浏览 167回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java