2013-05-16 17 views
5

Używam kamery do uruchomienia kamery w mojej aplikacji, ale zaraz po uruchomieniu intencji onActivityResult zostaje zwolniony, a ja jeszcze nie zrobiłem jeszcze zdjęcia.Funkcja onActivityResult jest wywoływana natychmiast po wysłaniu intencji kamery

Kiedy robię zrobić zdjęcie, wybierz go i wrócić z powrotem do mojej działalności onActivityResult nie zostanie w ogóle wywołany

oto jak ja uruchomienia aparatu

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

Dlaczego tylko onActivityResult dzwonienie po uruchomieniu kamery?

+0

Mówiłeś: „jak tylko (aparat) intencją pobiera opalane onActivityResult zostanie zwolniony”, a następnie "Kiedy robię zdjęcie ... onActivityResult w ogóle nie jest wywoływany". Który to? – Neoh

+0

@Neoh oba są wywoływane, gdy intencja jest wysyłana, ale kiedy chcę ją wywołać tak jak wtedy, gdy robię zdjęcie, nie jest wywoływana – tyczj

+0

Gdy wywoływana jest funkcja 'onActivityResult()', jaka jest wartość parametru resultCode parametr? –

Odpowiedz

4

Problem polegał na tym, że w moim manifestu miałem aktywność ustawiony singleInstance i widocznie startActivityForResult nie tak

+2

Tak, jeśli twoja aktywność ma' launchMode = "singleInstance" 'oznacza to, że kiedy uruchom aktywność kamery, aktywność kamery zostanie uruchomiona w innym zadaniu. Nie można komunikować się za pomocą metody 'startActivityForResult()' między 2 działaniami, które nie należą do tego samego zadania. Tak właśnie działała moja linia myślenia i dlaczego zadałem pytanie o kod wyniku. Kod wynikowy równy 0 to "RESULT_CANCELED", który wskazuje, że twoje wywołanie funkcji 'startActivityForResult()' zostało natychmiast anulowane z jakiegoś powodu. –