Question

Calling startActivityForResult gives me ActivityNotFoundException. I wanted to know that is it even possible to call startActivityForResult inside onActivityResult? If yes then what could possibly be wrong with my code:

Here is the code:

OnPreferenceClickListener selectListener = new OnPreferenceClickListener() {

        public boolean onPreferenceClick(Preference preference) {
            Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
            photoPickerIntent.setType("image/*");
            photoPickerIntent.putExtra("crop","true");
            startActivityForResult(photoPickerIntent, 123);
            return false;
        }

    };

    protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) { 
        super.onActivityResult(requestCode, resultCode, resultIntent);

        if(requestCode == 123){
            if(resultCode == RESULT_OK){
                Uri selectedImage = resultIntent.getData(); // uri from user selection.
                File tempFile; // temporary File
                Uri tempUri; // temporary Uri

                try {
                    // initializing File
                    tempFile = File.createTempFile("crop", ".png", Environment.getExternalStorageDirectory());
                } catch (IOException e1) {
                    tempFile = null;
                }

                if(tempFile != null){
                    // initializing Uri
                tempUri = Uri.fromFile(tempFile);   
                }else{
                    tempUri = selectedImage;
                }

                Display display = getWindowManager().getDefaultDisplay(); 
                int width = display.getWidth();
                int height = display.getHeight();

                // creating new crop intent
                final Intent cropIntent = new Intent("com.android.camera.action.CROP");
                cropIntent.setData(selectedImage); // original image Uri
                cropIntent.putExtra("outputX", width);
                cropIntent.putExtra("outputY", height);
                cropIntent.putExtra("aspectX", width);
                cropIntent.putExtra("aspectY", height);
                cropIntent.putExtra("scale", true);
                cropIntent.putExtra("noFaceDetection", true);
                cropIntent.putExtra("output", tempUri);  // cropped image Uri
                cropIntent.putExtra("outputFormat", "png");
                startActivityForResult(cropIntent, 456);
            }

        if(requestCode == 456){
            if(resultCode == RESULT_OK){
                System.out.println("inside request code 456");
            }
        }
Was it helpful?

Solution

I have solved this error by removing photoPickerIntent.putExtra("crop","true");.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top