当前,我正在一个项目中,我们拥有一些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();
我只是想知道是否有比这更好的方法。设备植根于我公司并由我私有,我不是在写病毒。