0

我的应用程序基于多个应用程序(每个应用程序都有不同的 apk 签名)。我想安装一个 apk 并在一次确认后设备应安装“捆绑包”中的所有应用程序。

我设法安装了应用程序包,但每次安装后我都会在安装前进行确认(见下文)。

我需要这是一个无缝的过程,用户只需确认一次安装过程。

@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;
    }

知道如何通过仅提示用户一次来安装它吗?

4

1 回答 1

2

我需要这是一个无缝的过程,用户只需确认一次安装过程。

幸运的是,这是不可能的——正如 zapi 所说,出于安全原因。用户有权知道正在安装什么,并有权说“不,我不想要那个”。

当然,欢迎您创建自己的内置所有这些应用程序的 ROM 模组,然后说服人们安装该 ROM。这消除了每个应用程序用户的选择。希望分发预装了应用程序的设备的企业会走这条路,不仅是为了避免提示,而且是为了防止人们在获得修改后的设备后卸载这些应用程序。

于 2012-08-19T14:13:57.637 回答