通过Shell命令更新应用程序-如何?

时间:2018-09-19 13:15:05

标签: android

当前,我正在一个项目中,我们拥有一些android-box来在一些公共区域显示内容。我们需要不时更新框中的应用程序,但没有人去访问设备并接受用户提示进行安装。我随此解决方案一起编写了一个bash脚本,用于从Shell卸载/安装/运行该应用程序。

String command;
            String date =new SimpleDateFormat("yyyyMMddHHmm").format(Calendar.getInstance().getTime()).toString();
            String MoveCommand="mv "+path+" "+Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"\n";
            command = "pm uninstall "+PackageName+" "+" && pm install -r " + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+fileName+" && sleep 1 && am start -n "+ActivityName+ " -a android.intent.action.MAIN -c android.intent.category.LAUNCHER";
            File filea = new File("/mnt/internal_sd/download"+File.separator+"test"+date+".sh");
            filea.createNewFile();
            if(filea.exists()){
             FileOutputStream fos=new FileOutputStream(filea.getPath());
             String bin="#!/bin/bash\n";
             byte []bins=bin.getBytes();
             fos.write(bins);
             command=MoveCommand+command+"\n done";
             byte[] bytes=command.getBytes();
             fos.write(bytes);
            }
            Process p=Runtime.getRuntime().exec("su");
            DataOutputStream dos = new DataOutputStream(p.getOutputStream());
            dos.writeBytes("sh "+"/mnt/internal_sd/download/test"+date+".sh"+"\n");
            dos.writeBytes("exit\n");
            p.waitFor();

我只是想知道是否有比这更好的方法。设备植根于我公司并由我私有,我不是在写病毒。

0 个答案:

没有答案