Xamarin.Forms App return data to calling App

前端 未结 2 1702
滥情空心
滥情空心 2021-01-17 02:52

So, either I am asking incorrectly, or it isn\'t possible, let\'s see which...

If my app (Xamarin.Forms) is launched from another app, in order to get a url from my

相关标签:
2条回答
  • 2021-01-17 03:23

    It seems you cannot use remote URI to provide to calling app. Some posts I checked suggest to store the file locally and provide it's path to calling app. To avoid memory leak with many files stored I suggest to use the same file name then you will have only one file at any moment.

    One more note. I tested this solution in facebook. Skype doesn't seem to accept that and, again, the posts I checked saying that Skype doesn't handle Intent properly (not sure what that means).

    Now to solution. In main activity for example in OnCreate method add the follow. ReturnImagePage is the name of my page class where I select an image

            Xamarin.Forms.MessagingCenter.Subscribe<ReturnImagePage, string>(this, "imageUri", (sender, requestedUri) => {
    
                Intent share = new Intent();
                string uri = "file://" + requestedUri;
                share.SetData(Android.Net.Uri.Parse(uri));
    
                // OR
                //Android.Net.Uri uri = Android.Net.Uri.Parse(requestedUri);
                //Intent share = new Intent(Intent.ActionSend);
                //share.PutExtra(Intent.ExtraStream, uri);
                //share.SetType("image/*");
                //share.AddFlags(ActivityFlags.GrantReadUriPermission);
    
                SetResult(Result.Ok, share);
                Finish();
            });
    

    Above will listen for the message when the image is selected.

    Then in XFroms code when image is selected dowload it, store it, get path and send to Activity using it's path. Below is my test path

    MessagingCenter.Send<ReturnImagePage, string>(this, "imageUri", "/storage/emulated/0/Android/data/ButtonRendererDemo.Droid/files/Pictures/temp/IMG_20170207_174559_21.jpg");
    
    0 讨论(0)
  • 2021-01-17 03:45

    You can use static public class to save and access results like:

    public static class StaticClass
    {
         public static int Result;
    }
    
    0 讨论(0)
提交回复
热议问题