2013-02-07 55 views
0

我試圖在使用攝像機的應用程序的某個活動中拍照,保存並返回文件位置以供進一步使用。 但是,當我在相機活動中按OK按鈕時,沒有任何反應(儘管取消工作)。Monodroid - 攝像機活動未返回

我正在使用模擬器。

有用來調用攝像頭活動代碼:

FindViewById<Button>(Resource.Id.exSetPicture).Click += delegate { 
      var dir = new Java.IO.File (
       Android.OS.Environment.GetExternalStoragePublicDirectory (
       Android.OS.Environment.DirectoryPictures), "MySuperbPictures"); 


      if (!dir.Exists()) { 
       dir.Mkdirs(); 
      } 

      _file = new Java.IO.File (dir, String.Format ("Picture\t{0}.jpg", Guid.NewGuid())); 
      Intent cameraIntent = new Intent(Android.Provider.MediaStore.ActionImageCapture); 
      cameraIntent.PutExtra (MediaStore.ExtraOutput, Android.Net.Uri.FromFile (_file)); 
      StartActivityForResult(cameraIntent, SET_NEW_PICTURE); 
     }; 

解決方案我發現,似乎沒有爲我工作:

  • 檢查應用程序的權限(照相機,外部存儲設置)
  • 確保文件夾已創建(斷點確實表明它不會進入if(!dir.Exists())
  • 將IntentExtra設置爲新文件而不是直接TLY Uri.FromFile(文件夾)

我有點卡住現在..這可能是一些非常愚蠢的,但我不知道爲什麼它不工作..

幫助將apreciated:P

編輯:

這是我的 「OnActivityResult」 有關的部分:

 protected override void OnActivityResult (int requestCode, Result resultCode, Android.Content.Intent data) 
    { 
     int ResultID = 0; 
     base.OnActivityResult (requestCode, resultCode, data); 

     if (data != null) { 
      if(resultCode == Result.Ok) { 
       switch (requestCode) { 
       case SET_NEW_PICTURE: 
        var contentUri = Android.Net.Uri.FromFile (_file); 
        PhotoLocation = contentUri.ToString(); 
        FindViewById<Button>(Resource.Id.exViewPhoto).Visibility = Android.Views.ViewStates.Visible; 
        break; 
       default: 
        break; 
       } 
      } 
     } 
    } 
+0

請確定你正在重寫'onActivityResult'以從相機Activity獲取結果嗎? –

+0

嘿,我做了,然後我可能做錯了:P 我將代碼添加到第一篇文章。 (刪除關於其他活動返回的部分) – MagiKruiser

+0

它不會當我點擊確定,但它確實當我按取消... 我真的不明白它。 (我在OnActivityResult中設置了一個斷點來檢查) – MagiKruiser

回答

0

問題解決:似乎Android不喜歡文件名中的「\ t」... 不知何故..這是Monodroid文檔fml的一部分。