2013-05-16 29 views
5

Tôi đang sử dụng ý định máy ảnh để khởi chạy máy ảnh trong ứng dụng của mình nhưng ngay khi ý định bị bắn onActivityResult bị kích hoạt và tôi chưa chụp ảnh.onActivityResult nhận được gọi ngay sau khi mục đích máy ảnh được gửi

Khi tôi làm chụp ảnh, chọn nó và trở về hoạt động của tôi onActivityResult không nhận được gọi ở tất cả

ở đây là làm thế nào tôi khởi động máy ảnh

PackageManager pm = getPackageManager(); 
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 
     Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

     File tempDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"Mobile Map"); 
     if (!tempDir.exists()) { 
      if (!tempDir.mkdir()) { 
       Toast.makeText(this, 
         "Please check SD card! Image shot is impossible!", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",Locale.US).format(new Date()); 
     File mediaFile = new File(tempDir.getPath() + File.separator+ "IMG_" + timeStamp + ".jpg"); 

     photoUri = Uri.fromFile(mediaFile); 
     camera.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
     startActivityForResult(camera, CAMERA_REQUEST); 
    } else { 
     Toast.makeText(this,"This device does not have a rear facing camera",Toast.LENGTH_SHORT).show(); 
    } 

Tại sao chỉ là onActivityResult được gọi sau khi ý định máy ảnh khởi chạy?

+0

Bạn nói: "ngay sau khi (camera) ý định bị bắn onActivityResult bị sa thải", nhưng sau đó "Khi tôi chụp ảnh ... onActivityResult không được gọi gì cả". Đó là cái nào? – Neoh

+0

@Neoh cả hai, nó được gọi khi ý định được gửi nhưng khi tôi thực sự muốn nó được gọi như khi tôi lấy hình ảnh của tôi nó không được gọi là – tyczj

+0

Khi 'onActivityResult()' được gọi, giá trị của resultCode là gì tham số? –

Trả lời

4

Vấn đề là trong manifest của tôi, tôi đã có các hoạt động thiết lập để singleInstance và dường như startActivityForResult không như thế

+2

Có, nếu hoạt động của bạn có' launchMode = "singleInstance" 'có nghĩa là khi bạn khởi động hoạt động của máy ảnh, hoạt động của máy ảnh sẽ được khởi chạy vào một tác vụ khác. Bạn không thể giao tiếp bằng cách sử dụng 'startActivityForResult()' giữa 2 hoạt động không có cùng nhiệm vụ. Đó thực sự là nơi mà dòng suy nghĩ của tôi đang diễn ra và tại sao tôi hỏi câu hỏi về mã kết quả. Mã kết quả của 0 là 'RESULT_CANCELED' cho biết lệnh gọi' startActivityForResult() 'của bạn đã bị hủy ngay lập tức vì một lý do nào đó. –