xamarin を使用して imageview に画像を表示しようとしていますが、カメラの承認ボタンを押してもメイン アクティビティに戻りません。
ここにコードがあります
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.AddPurchase);
// Create your application here
ConfigLayout ();
if (IsThereAnAppToTakePictures ())
{
CreateDirectoryForPictures ();
Button cameraButton = FindViewById<Button> (Resource.Id.buttonTakePicture);
_imageView = FindViewById<ImageView> (Resource.Id.imageView);
cameraButton.Click += TakeAPicture;
}
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
Intent mediaScanIntent = new Intent (Intent.ActionMediaScannerScanFile);
var contentUri = Uri.FromFile (_file);
mediaScanIntent.SetData (contentUri);
SendBroadcast (mediaScanIntent);
int height = _imageView.Height;
int width = _imageView.Width;
using (Bitmap bitmap = _file.Path.LoadAndResizeBitmap(width, height)) {
_imageView.SetImageBitmap (bitmap);
}
}
bool IsThereAnAppToTakePictures ()
{
Intent intent = new Intent (MediaStore.ActionImageCapture);
IList<ResolveInfo> availableActivities = PackageManager.QueryIntentActivities (intent, PackageInfoFlags.MatchDefaultOnly);
return availableActivities != null && availableActivities.Count > 0;
}
void CreateDirectoryForPictures ()
{
_dir = new File (Environment.GetExternalStoragePublicDirectory (Environment.DirectoryPictures), "Boekhoudservice");
if(!_dir.Exists ())
_dir.Mkdirs();
}
private void TakeAPicture(object sender, System.EventArgs eventArgs)
{
if (_imageView.Drawable != null) {
_imageView.SetImageResource (0);
}
Intent intent = new Intent (MediaStore.ActionImageCapture);
_file = new Java.IO.File(_dir, String.Format ("uitgave_{0}.jpg", System.DateTime.Now.ToString ("d")));
intent.PutExtra (MediaStore.ExtraOutput, Uri.FromFile(_file));
StartActivityForResult (intent, RequestCodeConstants.CameraIntent);
}
問題はディレクトリの作成方法にあるようです。ディレクトリが存在するかどうかを確認するとtrueが返されますが、自分で確認するとファイルエクスプローラーには表示されません。
これらの権限は両方とも私の AndroidManifest にあります
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />