如何在onActivityResult内部调用startActivityForResult



调用startActivityForResult会得到ActivityNotFoundException。我想知道在onActivityResult内部调用startActivityForResult是否可能?如果是,那么我的代码可能出了什么问题:

这是代码:

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");
            }
        }

我已经通过删除photoPickerIntent.putExtra("crop","true");解决了这个错误。

相关内容

  • 没有找到相关文章

最新更新