![](/img/trans.png)
[英]onActivityResult Not Being Called For UnityPlayerActivity
[英]OnActivityResult() not being called when using a Camera intent?
我正在嘗試在我的 Xamarin.Android 應用程序中創建一個具有按鈕的頁面(我們稱之為第 2 頁),當您按下該按鈕時,相機應用程序將打開。 然后你拍照,接受你拍的照片,然后你應該回到原來有相機按鈕的頁面(第2頁),你拍攝的圖像將顯示在按鈕下方。
問題是在您接受圖片后,我重寫的 OnActivityResult() 方法永遠不會被調用。 您按下按鈕,相機應用程序打開,您拍照,接受照片,相機應用程序關閉,您將返回到相機按鈕頁面之前的頁面(因此您現在位於第 1 頁)。 我認為相機應用程序本身正在崩潰? 我不確定如何找到這些日志。 有時會彈出一個窗口顯示“不幸的是,相機已停止”。 我猜這是我試圖將拍攝的照片保存到手機本身的方式? 我看到的唯一錯誤是在設備日志中,偶爾它會拋出一個權限錯誤,說我無權寫入手機上的存儲設備,但我在清單文件中有“寫”權限。 我的目標是 API 26。
有任何想法嗎?
下面是點擊按鈕的方法:
private int PIC_REQUEST_CODE = 1;
private ImageView imageView;
private Java.IO.File image;
private void Button_Click(object sender, EventArgs e)
{
Intent takePictureIntent = new Intent(MediaStore.ActionImageCapture);
if (takePictureIntent.ResolveActivity(PackageManager) != null)
{
try
{
// Create an image file name
string timeStamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string imageFileName = "JPEG_" + timeStamp + "_";
Java.IO.File storageDir = GetExternalFilesDir(global::Android.OS.Environment.DirectoryPictures);
Java.IO.File image = Java.IO.File.CreateTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
global::Android.Net.Uri photoURI = FileProvider.GetUriForFile(ApplicationContext, PackageName + ".fileprovider", image);
takePictureIntent.PutExtra(MediaStore.ExtraOutput, photoURI);
takePictureIntent.AddFlags(ActivityFlags.GrantWriteUriPermission);
StartActivityForResult(takePictureIntent, PIC_REQUEST_CODE);
}
catch (Exception ex)
{
//Not sure what to do, but here's a break point at least.
Toast.MakeText(this, "blah blah something went wrong", ToastLength.Short).Show();
}
}
}
這是我的簡單 OnActivityResult ,它被跳過/從未調用過:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (requestCode == PIC_REQUEST_CODE && resultCode == Result.Ok)
{
Bitmap bitmap = (Bitmap)data.Extras.Get("data");
imageView.SetImageBitmap(bitmap);
}
}
我發現了 OnActivityResult() 沒有被調用的當前問題。 在 class 上方我聲明
[Activity(Label = "@string/page_name", ScreenOrientation = ScreenOrientation.Portrait, NoHistory = true)]
這里的重要說明是“NoHistory=True”顯然使頁面退出並返回到上一頁。 刪除“NoHistory = true”有效並使其調用 OnActivityResult()。 關於它的一些文檔說“'true'的值意味着活動不會留下歷史痕跡。它不會保留在任務的活動堆棧中,因此用戶將無法返回它”所以我猜那講得通。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.