Not able to to go back to calling activity on backpress while using zing barcode
<p>Problem :</p>

<p>When i am going in zingbar scanner and pressing back press my application is crashing . Please help me out with this.   My aim intention is to get back to the activity from where i am calling bar code scanner .     </p>

<p>code where i am calling zing barcode :</p>

<pre><code>        qrcodescan.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            IntentIntegrator integrator = new IntentIntegrator(HomeScreen.this);
            integrator.initiateScan();


            }
    });
</code></pre>

<p>my IntentIntegrator class.</p>

<pre><code>public class IntentIntegrator {

    public static final int REQUEST_CODE = 0x0000c0de; // Only use bottom 16
                                                        // bits

    private static final String TAG = IntentIntegrator.class.getSimpleName();

    public static final String DEFAULT_TITLE = "Install Barcode Scanner?";

    public static final String DEFAULT_MESSAGE =

    "This application requires Barcode Scanner. Would you like to install it?";

    public static final String DEFAULT_YES = "Yes";

    public static final String DEFAULT_NO = "No";

    private static final String BS_PACKAGE = "com.google.zxing.client.android";

    // supported barcode formats

    public static final Collection&lt;String&gt; PRODUCT_CODE_TYPES = list("UPC_A",
            "UPC_E", "EAN_8", "EAN_13", "RSS_14");

    public static final Collection&lt;String&gt; ONE_D_CODE_TYPES =

    list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "CODE_39", "CODE_93", "CODE_128",

    "ITF", "RSS_14", "RSS_EXPANDED");

    public static final Collection&lt;String&gt; QR_CODE_TYPES = Collections
            .singleton("QR_CODE");

    public static final Collection&lt;String&gt; DATA_MATRIX_TYPES = Collections
            .singleton("DATA_MATRIX");

    public static final Collection&lt;String&gt; ALL_CODE_TYPES = null;

    public static final Collection&lt;String&gt; TARGET_BARCODE_SCANNER_ONLY = Collections
            .singleton(BS_PACKAGE);

    public static final Collection&lt;String&gt; TARGET_ALL_KNOWN = list(

    BS_PACKAGE, // Barcode Scanner

            "com.srowen.bs.android", // Barcode Scanner+

            "com.srowen.bs.android.simple" // Barcode Scanner+ Simple

    // TODO add more -- what else supports this intent?

    );

    private final Activity activity;

    private String title;

    private String message;

    private String buttonYes;

    private String buttonNo;

    private Collection&lt;String&gt; targetApplications;

    public IntentIntegrator(Activity activity) {

        this.activity = activity;

        title = DEFAULT_TITLE;

        message = DEFAULT_MESSAGE;

        buttonYes = DEFAULT_YES;

        buttonNo = DEFAULT_NO;

        targetApplications = TARGET_ALL_KNOWN;

    }

    public String getTitle() {

        return title;

    }

    public void setTitle(String title) {

        this.title = title;

    }

    public void setTitleByID(int titleID) {

        title = activity.getString(titleID);

    }

    public String getMessage() {

        return message;

    }

    public void setMessage(String message) {

        this.message = message;

    }

    public void setMessageByID(int messageID) {

        message = activity.getString(messageID);

    }

    public String getButtonYes() {

        return buttonYes;

    }

    public void setButtonYes(String buttonYes) {

        this.buttonYes = buttonYes;

    }

    public void setButtonYesByID(int buttonYesID) {

        buttonYes = activity.getString(buttonYesID);

    }

    public String getButtonNo() {

        return buttonNo;

    }

    public void setButtonNo(String buttonNo) {

        this.buttonNo = buttonNo;

    }

    public void setButtonNoByID(int buttonNoID) {

        buttonNo = activity.getString(buttonNoID);

    }

    public Collection&lt;String&gt; getTargetApplications() {

        return targetApplications;

    }

    public void setTargetApplications(Collection&lt;String&gt; targetApplications) {

        this.targetApplications = targetApplications;

    }

    public void setSingleTargetApplication(String targetApplication) {

        this.targetApplications = Collections.singleton(targetApplication);

    }



    public AlertDialog initiateScan() {

        return initiateScan(ALL_CODE_TYPES);

    }



    public AlertDialog initiateScan(Collection&lt;String&gt; desiredBarcodeFormats) {

        Intent intentScan = new Intent(BS_PACKAGE + ".SCAN");

        intentScan.addCategory(Intent.CATEGORY_DEFAULT);

        // check which types of codes to scan for

        if (desiredBarcodeFormats != null) {

            // set the desired barcode types

            StringBuilder joinedByComma = new StringBuilder();

            for (String format : desiredBarcodeFormats) {

                if (joinedByComma.length() &gt; 0) {

                    joinedByComma.append(',');

                }

                joinedByComma.append(format);

            }

            intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString());

        }

        String targetAppPackage = findTargetAppPackage(intentScan);

        if (targetAppPackage == null) {

            return showDownloadDialog();

        }

        intentScan.setPackage(targetAppPackage);

        intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        startActivityForResult(intentScan, REQUEST_CODE);
//      activity.onBackPressed();
//      activity.finishActivity(REQUEST_CODE);
        return null;

    }



    protected void startActivityForResult(Intent intent, int code) {

        activity.startActivityForResult(intent, code);

    }

    private String findTargetAppPackage(Intent intent) {

        PackageManager pm = activity.getPackageManager();

        List&lt;ResolveInfo&gt; availableApps = pm.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);

        if (availableApps != null) {

            for (ResolveInfo availableApp : availableApps) {

                String packageName = availableApp.activityInfo.packageName;

                if (targetApplications.contains(packageName)) {

                    return packageName;

                }

            }

        }

        return null;

    }

    private AlertDialog showDownloadDialog() {

        AlertDialog.Builder downloadDialog = new AlertDialog.Builder(activity);

        downloadDialog.setTitle(title);

        downloadDialog.setMessage(message);

        downloadDialog.setPositiveButton(buttonYes,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                        Uri uri = Uri
                                .parse("market://details?id=" + BS_PACKAGE);

                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);

                        try {

                            activity.startActivity(intent);

                        } catch (ActivityNotFoundException anfe) {

                            // Hmm, market is not installed

                            Log.w(TAG,
                                    "Android Market is not installed; cannot install Barcode Scanner");

                        }

                    }

                });

        downloadDialog.setNegativeButton(buttonNo,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                    }

                });

        return downloadDialog.show();

    }



    public static IntentResult parseActivityResult(int requestCode,
            int resultCode, Intent intent) {

        if (requestCode == REQUEST_CODE) {

            if (resultCode == Activity.RESULT_OK) {

                String contents = intent.getStringExtra("SCAN_RESULT");

                String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");

                byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");

                int intentOrientation = intent.getIntExtra(
                        "SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);

                Integer orientation = intentOrientation == Integer.MIN_VALUE ? null
                        : intentOrientation;

                String errorCorrectionLevel = intent
                        .getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");

                return new IntentResult(contents, formatName, rawBytes,
                        orientation,

                        errorCorrectionLevel);

            }

            return new IntentResult();

        }

        return null;

    }


    public void shareText(CharSequence text) {

        Intent intent = new Intent();

        intent.addCategory(Intent.CATEGORY_DEFAULT);

        intent.setAction(BS_PACKAGE + ".ENCODE");

        intent.putExtra("ENCODE_TYPE", "TEXT_TYPE");

        intent.putExtra("ENCODE_DATA", text);

        String targetAppPackage = findTargetAppPackage(intent);

        if (targetAppPackage == null) {

            showDownloadDialog();

        } else {

            intent.setPackage(targetAppPackage);

            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

            activity.startActivity(intent);

        }

    }

    private static Collection&lt;String&gt; list(String... values) {

        return Collections.unmodifiableCollection(Arrays.asList(values));

    }

}
</code></pre>
