我的应用程序基于多个应用程序(每个应用程序都有不同的apk签名)。我想安装一个apk,在一次确认后,设备应该在“bundle”中安装所有应用程序。
我设法安装了应用程序包,但每次安装后我都会在安装之前得到确认(见下文)。
我需要这是一个无缝过程,用户只需要确认一次安装过程。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
installAPK(R.raw.apk0, 0);
}
private void installAPK(int apk, int apk_code) {
try {
InputStream in = this.getResources().openRawResource(apk);
byte[] b = new byte[in.available()];
int read = in.read(b);
// String tempFileName = "currentapk.apk";
FileOutputStream fout = openFileOutput(tempFileName,
MODE_WORLD_READABLE);
fout.write(b);
fout.close();
in.close();
File tempFile = getFileStreamPath(tempFileName);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(tempFile),
"application/vnd.android.package-archive");
startActivityForResult(Intent.createChooser(intent, "install"),
apk_code);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
File tempFile = getFileStreamPath(tempFileName);
if (tempFile.delete()) {
Log.d("******PACKAGING******", "FILE DELETED!");
}
switch (requestCode) {
case 0: {
installAPK(R.raw.apk1, 1);
break;
}
case 1: {
installAPK(R.raw.apk2, 2);
break;
}
case 2: {
installAPK(R.raw.apk3, 3);
break;
}
我知道如何通过仅提示用户一次来安装它吗?
答案 0 :(得分:2)
我需要这是一个无缝过程,用户只需要确认一次安装过程。
幸运的是,这是不可能的 - 正如zapi所说,出于安全原因。用户有权知道正在安装的内容,并且有权说“不,我不想要”。
当然,欢迎您创建自己的ROM mod,内置所有这些应用程序,然后说服人们安装该ROM。这消除了每个应用程序用户的选择。希望通过预先安装的应用程序分发设备的企业将采用这种方式,不仅是为了避免提示,而且是为了防止人们在获得修改后的设备时卸载这些应用程序。