private void permissionsDialog(final FinishedApk viewApk, ArrayList<ApkPermission> permissions) {

    View v = LayoutInflater.from(context).inflate(R.layout.app_permission, null);
    LinearLayout layout = (LinearLayout) v.findViewById(R.id.container);

    if (permissions != null) {

      if (!permissions.isEmpty()) {
        for (int i = 0; i < permissions.size(); i++) {
          ApkPermission permission = permissions.get(i);

          View permissionView = LayoutInflater.from(context).inflate(R.layout.row_permission, null);
          if (i == 0 || !permissions.get(i - 1).getName().equals(permission.getName())) {
            ((TextView) permissionView.findViewById(R.id.permission_name))
                .setText(permission.getName());
          } else {
            permissionView.findViewById(R.id.permission_name).setVisibility(View.GONE);
          }
          ((TextView) permissionView.findViewById(R.id.permission_description))
              .setText(permission.getDescription());
          layout.addView(permissionView);
        }
      } else {
        TextView tv = new TextView(context);
        tv.setPadding(10, 10, 10, 10);
        tv.setText(context.getString(R.string.no_permissions_required));
        layout.addView(tv);
      }
    }

    final AlertDialog dialog = new AlertDialog.Builder(context).setView(v).create();
    dialog.setTitle(context.getString(R.string.restore) + " " + viewApk.getName() + "?");
    // dialog.setIcon(BitmapDrawable.createFromPath(ImageLoader.getInstance().getDiscCache().get(path).getAbsolutePath()));

    dialog.setButton(
        DialogInterface.BUTTON_POSITIVE,
        context.getString(android.R.string.yes),
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            executor.submit(
                new Runnable() {
                  @Override
                  public void run() {
                    DownloadUtils.installWithRoot(viewApk);
                  }
                });
            finish();
          }
        });

    dialog.setButton(
        DialogInterface.BUTTON_NEGATIVE,
        context.getString(android.R.string.no),
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
          }
        });
    dialog.setOnDismissListener(
        new DialogInterface.OnDismissListener() {
          @Override
          public void onDismiss(DialogInterface dialog) {
            finish();
          }
        });
    dialog.setCancelable(false);
    // dialog.show();

    String path = viewApk.getIconPath();
    GlideUtils.showDialogWithGlideLoadingIconFromCache(dialog, path, this);
  }