public static void exportSelectedPrivateKey(final Activity parent) {
   final Record record = MbwManager.getInstance(parent).getRecordManager().getSelectedRecord();
   if (record == null || !record.hasPrivateKey()) {
     return;
   }
   AlertDialog.Builder builder = new AlertDialog.Builder(parent);
   builder
       .setMessage(R.string.export_single_private_key_warning)
       .setCancelable(true)
       .setPositiveButton(
           R.string.yes,
           new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
               dialog.dismiss();
               Intent intent = new Intent(parent, ExportAsQrCodeActivity.class);
               parent.startActivity(intent);
             }
           })
       .setNegativeButton(
           R.string.no,
           new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {}
           });
   AlertDialog alertDialog = builder.create();
   alertDialog.show();
 }
  public static void pinProtectedBackup(final Activity activity) {
    MbwManager manager = MbwManager.getInstance(activity);
    manager.runPinProtectedFunction(
        activity,
        new Runnable() {

          @Override
          public void run() {
            Utils.backup(activity);
          }
        });
  }
  private static void backup(final Activity parent) {

    // Get a list of all records
    RecordManager recordManager = MbwManager.getInstance(parent).getRecordManager();
    List<Record> records = new LinkedList<Record>();
    records.addAll(recordManager.getRecords(Tag.ACTIVE));
    records.addAll(recordManager.getRecords(Tag.ARCHIVE));

    if (records.size() == 1 && records.get(0).hasPrivateKey()) {
      // If there is only one record, and it has a private key we let the
      // user choose which backup method to use
      backupSingleRecord(parent, records.get(0));
    } else {
      // Otherwise we automatically launch encrypted PDF backup
      backupAllRecords(parent);
    }
  }