我正在尝试使用相机在我的应用程序的一个活动中拍照,保存并返回文件位置以供进一步使用。但是,当我在相机活动中按下确定按钮时,什么也没有发生(尽管取消工作)。
我正在使用模拟器。
有用于调用Camera Activity的代码:
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 设置为新文件,而不是直接设置 Uri.FromFile(folder)
我现在有点卡住了..这可能真的很愚蠢,但我不明白为什么它不起作用..
帮助将不胜感激: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;
}
}
}
}