Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android静默更新apk,然后重新启动应用程序_Android_Root - Fatal编程技术网

Android静默更新apk,然后重新启动应用程序

Android静默更新apk,然后重新启动应用程序,android,root,Android,Root,好吧,首先我想澄清一下,我并不是想搞什么可疑的事情。我们有自己的企业应用程序,只与我们自己的硬件配套(我们不使用谷歌play商店)。此外,手机是根。我已经实现了我们自己的Apk更新机制。到目前为止,我已经成功地使用下面的代码静默安装了apk try { val command = "pm install -r " + file.path val openAppCommand = "am start -a android.intent.action.MAIN

好吧,首先我想澄清一下,我并不是想搞什么可疑的事情。我们有自己的企业应用程序,只与我们自己的硬件配套(我们不使用谷歌play商店)。此外,手机是根。我已经实现了我们自己的Apk更新机制。到目前为止,我已经成功地使用下面的代码静默安装了apk

    try {
        val command = "pm install -r " + file.path
        val openAppCommand = "am start -a android.intent.action.MAIN -n" +
                BuildConfig.APPLICATION_ID + "/.MainActivity"
        val process = Runtime.getRuntime().exec(arrayOf("su", "-c", command, openAppCommand))

        val exitVal = process.waitFor()
        if (process.exitValue() == 0) {
            Log.e("updateAppSilently", "Apk installed")
        } else {
            Log.e("updateAppSilently", "Something went wrong while installing apk")
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
openAppCommand被忽略,因为重新启动后当前进程被终止

我甚至试过

       <receiver android:name="com.updatesmanager.AppUpdateBroadcastReceiver"
            android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
            </intent-filter>
        </receiver>
我甚至尝试过设置报警,但它无法工作,因为应用程序已更新/重新安装,因此报警被清除


非常感谢您提供的任何帮助。

好的,尽管这很愚蠢,但我没有更新更新apk的版本代码(尽管我强烈认为在运行
pm install-r
命令时,无论版本代码如何,广播接收器都应该触发,因为包已被替换)。当我从当前apk增加版本代码时。AppUpdateBroadcastReceiver没有被触发。

没有人?实际上没有人??
class AppUpdateBroadcastReceiver : BroadcastReceiver(){
    override fun onReceive(context: Context?, intent: Intent?) {
        Log.d("AppUpdateBroadcastReceiver", "App got updated!")
        val intent = Intent(context, MainActivity::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

        context?.startActivity(intent)


       /* Log.d("AppUpdateBroadcastReceiver", "App got updated!")
        val command = "am start -a android.intent.action.MAIN -n" +
                BuildConfig.APPLICATION_ID + "/.MainActivity"
        val process = Runtime.getRuntime().exec(arrayOf("su", "-c", command))
        val exitVal =  process.waitFor()

        if(exitVal == 0){
            Log.e("AppUpdateBroadcastReceiver", "App launched")
        }*/
    }

}