我开发了一个应用程序,并希望自己更新,并希望以下的设备,设备已根植于:
1次自动检查可以更新每次启动(我可以做)
2下载apk文件到本地(我可以)
3使用自定义对话框更新,或者以静默方式更新(我不知道)
编辑: 我的应用程序在带遥控器的电视上运行,默认对话框可以控制但是完美,所以如果必须有对话框,我想使用我的对话框。如果不需要对话框,它最好。
答案 0 :(得分:2)
首先声明这些变量,然后在任何地方调用函数。然后在超级用户应用程序上授予超级用户权限,选中始终授予的选项,以进行非用户交互。
@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());
}
}
答案 1 :(得分:0)
常规方式(没有root和默认安装程序对话框)被描述为in another question,并且应该在大多数情况下使用imho,因为我不喜欢为更新功能请求root权限。
提供自定义对话框并静默安装apk没有区别,因为两者在技术上都是静默安装(例如,不是由安装活动创建)。使用root权限,您可以使用root shell并替换apk(as in the open-source keybord manager app)或从shell调用package manager。我建议你采用第二种方式,我将keybord管理器应用程序源链接主要用于root shell创建。
答案 2 :(得分:-2)
Android框架无法以静默方式更新,在自定义设备上必须为您的apk文件调用系统安装服务,它将显示用户的安装对话框,但如果设备已植根,我认为您可以制作那是默默无闻的。