onActivityResult()不会调用

时间:2017-01-18 15:19:29

标签: android

当我从相机或图库中选择图片并且我的活动崩溃时,onActivityResult()没有调用,我的代码如下:

private void selectImage() {

final CharSequence[] options = { "cam", "gallery","cancel" };

AlertDialog.Builder builder = new AlertDialog.Builder(FragmentActivity4.this);
builder.setTitle("add");
builder.setItems(options, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {

         boolean result=Utility.checkPermission(FragmentActivity4.this);

        if (options[item].equals("cam"))
        {
             if(result){

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp.jpg");
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                           startActivityForResult(intent, 1);
        }}
        else if (options[item].equals("gallery"))
        {
            final Intent galleryIntent = new Intent();
            galleryIntent.setType("image/*");
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
            final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source");

            startActivityForResult(chooserIntent, 2);
        }
        else if (options[item].equals("cancel")) {
            ivImage.setImageDrawable(ContextCompat.getDrawable(FragmentActivity4.this, R.drawable.plusrred));


            dialog.dismiss();
        }
    }
});
builder.show();
}

和我的onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);




if (resultCode ==Activity.RESULT_OK) {

    if (requestCode == 1) {
        File f = new File(Environment.getExternalStorageDirectory().toString());
        for (File temp : f.listFiles()) {
            if (temp.getName().equals("temp.jpg")) {
                f = temp;
                break;
            }
        }
        try {
            Bitmap bitmap;
            BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();

            bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
                    bitmapOptions); 

            ivImage.setImageBitmap(bitmap);
            Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap,(int)(bitmap.getWidth()*0.03), (int)(bitmap.getHeight()*0.03), true);
            ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
            bitmap1.compress(Bitmap.CompressFormat.PNG, 0, baos1);
            byte[] imgBytes = baos1.toByteArray();
            base64String1 = Base64.encodeToString(imgBytes, Base64.DEFAULT);
            String path = android.os.Environment.getExternalStorageDirectory()
                    + File.separator
                    + "Phoenix" + File.separator + "default";
            f.delete();
            OutputStream outFile = null;
            File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
            try {
                outFile = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.PNG, 0, outFile);
                outFile.flush();
                outFile.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else if (requestCode == 2) {

        Uri selectedImage = data.getData();
        String[] filePath = { MediaStore.Images.Media.DATA };
        Cursor c = FragmentActivity4.this.getContentResolver().query(selectedImage,filePath, null, null, null);
        c.moveToFirst();
        int columnIndex = c.getColumnIndex(filePath[0]);
        String picturePath = c.getString(columnIndex);
        c.close();
        Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
        Log.w("path of image from gallery......******************.........", picturePath+"");
        ivImage.setImageBitmap(thumbnail);


        Bitmap thumbnail1 = Bitmap.createScaledBitmap(thumbnail,(int)(thumbnail.getWidth()*0.03), (int)(thumbnail.getHeight()*0.03), true);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        thumbnail1.compress(Bitmap.CompressFormat.PNG,0, baos);
        byte[] imgBytes = baos.toByteArray();
 base64String1    = Base64.encodeToString(imgBytes,
                Base64.DEFAULT);


    }
}

我的活动扩展了AppCompatActivity。

你能告诉我问题在哪里吗?

2 个答案:

答案 0 :(得分:0)

你有 startActivityForResult(chooserIntent, 2);

并且在onActivityResult方法中,if语句中不包含2。我认为问题出在那里。

答案 1 :(得分:0)

您的RequestCode是2。

改变这个:

if (requestCode == 1) {

有了这个:

if (requestCode == 2) {