我开发了一个应用程序并想要更新自己并想要以下功能,设备已被植根:
1 自动检查可以在每次启动时更新(我可以)
2 将apk 文件下载到本地(我可以)
3 使用自定义对话框更新,或者静默更新(我不知道)
编辑:我的应用程序在电视上运行,带有遥控器,默认对话框可以控制但完美,所以如果必须有对话框我想使用我的对话框。如果不需要对话框最好。
首先声明这个变量,然后在任何你想要的地方调用函数。然后授予超级用户,在您的超级用户应用程序上,选中始终授予选项以进行非用户交互。
@Override
public void onCreate() {
super.onCreate();
//some code...
final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";
final String commands = libs + "pm install -r " + "your apk directory"+ "app.apk";
instalarApk(commands);
}
private void instalarApk( String commands ) {
try {
Process p = Runtime.getRuntime().exec( "su" );
InputStream es = p.getErrorStream();
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(commands + "\n");
os.writeBytes("exit\n");
os.flush();
int read;
byte[] buffer = new byte[4096];
String output = new String();
while ((read = es.read(buffer)) > 0) {
output += new String(buffer, 0, read);
}
p.waitFor();
} catch (IOException e) {
Log.v(Debug.TAG, e.toString());
} catch (InterruptedException e) {
Log.v(Debug.TAG, e.toString());
}
}
常规方式(没有 root 和默认安装程序对话框)在另一个问题中进行了描述,并且应该在大多数情况下使用恕我直言,因为我不喜欢为更新功能请求 root 权限。
提供自定义对话框和静默安装 apk 没有区别,因为两者在技术上都是静默安装(例如,不是由安装活动进行的)。使用 root 权限,您可以使用 root shell 并替换 apk(如在开源键盘管理器应用程序中)或从 shell调用包管理器。我建议您采用第二种方式,我链接了键盘管理器应用程序源,主要用于创建根 shell 的东西。
Android 框架很难静默更新,在自定义设备上,您必须为您的 apk 文件调用系统安装服务,它会为用户显示安装对话框,但如果设备已植根,我认为您可以静默进行。