2013-05-16 7 views
5

私はカメラでアプリを起動しようとしていますが、意図が起こるとすぐにonActivityResultが解雇され、まだ写真を撮っていません。onActivityResultがカメラのインテントが送信されるとすぐに呼び出されます

私はonActivityResultはここにすべての

で呼び出されませんが、写真を撮って、それを選択して、私の活動に戻りません、私はカメラを起動する方法

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

なぜのみonActivityResultですカメラのインテントが起動した後に呼び出されますか?

+0

いる:そして、「(カメラ)意図はonActivityResultがトリガーされますトリガーされますとすぐとして」が、 "写真を撮ると... onActivityResultはまったく呼び出されません"。どちらですか? – Neoh

+0

@Neohインテントが送信されたときに呼び出されますが、実際に呼び出すときに呼び出されるようにしたいときは、呼び出されません – tyczj

+0

'onActivityResult()'が呼び出されたとき、resultCodeの値は何ですかパラメータ? –

答えて

4

問題は、私のマニフェストに私は活動がsingleInstanceに設定していたということであったと明らかにstartActivityForResult好きではないあなたが言っ

+2

はい、あなたのアクティビティに' launchMode = "singleInstance" 'がある場合は、カメラアクティビティを起動すると、カメラアクティビティが別のタスクに開始されます。同じタスクにない2つのアクティビティ間で 'startActivityForResult()'を使って通信することはできません。それは実際に私の考え方がどこに向かうのか、なぜ結果コードについて質問したのかということでした。結果コード0は 'RESULT_CANCELED'で、何らかの理由で' startActivityForResult() 'への呼び出しが直ちにキャンセルされたことを示します。 –

関連する問題