Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all 89864 articles
Browse latest View live

Hosted PDF is Display inside WebView

$
0
0

Dear All,

I used bellow code to display hosted pdf in webview with the help of google drive url. Its working fine, some times displays white screen (display nothing). Pls help is there any better solution.

var pdfUrl = "http://yourdomain.com/pdffile.pdf";
var googleUrl = "http://drive.google.com/viewerng/viewer?embedded=true&url=";
if(Device.RuntimePlatform == Device.iOS)
{
    webView.Source = pdfUrl;
}
else if(Device.RuntimePlatform == Device.Android)
{
    webView.Source = new UrlWebViewSource() { Url = googleUrl + pdfUrl };
}

Thank you.


Check Box crashes while loading

$
0
0

Hi guys
We have been working with xamarin.forms 2.5 for many years but recently we decided to upgrade xamarin.forms in to 4.6 (latest version) and converted portable library in to .net core (.net Standard 2.1)
right now we have all the latest versions including visual studio (2019 16.5.4).
We are no trying convert our custom made tools in to xamarin.forms tools such as ImageButton, Checkbox and Radio Button
ImageButton so far successful with conversion but when we tried to use Xamarin.Forms checkbox this issue occurs while loading the page


and error also doesn't say much to resolve
Do you have any suggestion we should do here?

Xamarin.Forms Error when navigate to another page in button_clicked

$
0
0

Hi . In my Xamarin.Forms project I have a SplashScreen for Android and an AppDelegate for IOS that check some conditions and then pass some data to App.xaml.cs . Then

public App(string isLogin)
        {
            InitializeComponent();

            if (isLogin == "Nologin")
                App.Current.MainPage = new LoginPage();
            else
            {
                switch (isLogin)
                {
                    case "Update": 
                            App.Current.MainPage = new MessagePage("Some Message");
                        break;

                    case "Internet":
                        App.Current.MainPage = new MessagePage("Some Message");
                        break;

                    default:
                        App.Current.MainPage = new MainPage(isLogin);
                        break;
                }
            }


        }

Now in the MessagePage I have this

private async void RefreshButton_Clicked(object sender, EventArgs e)
{
    string result = await AppStart.DoStartAsync().ConfigureAwait(false);

        if (result == "Login")
           await Navigation.PushAsync(new LoginPage());
}

that show this error :

System.InvalidOperationException: 'PushAsync is not supported globally on Android, please use a NavigationPage.'

and if I use this

if (result == "Login")
    Application.Current.MainPage = new NavigationPage(new LoginPage());

Show this error :

Android.Util.AndroidRuntimeException: 'Only the original thread that created a view hierarchy can touch its views.'

What can I do ?

not show image

$
0
0

        <Image Source="https://www.cdn.vatanbgs.com/Content/Images/Products/460_466/637089327869489423.jpg" Aspect="Fill" HeightRequest="150"/>
        <Image Source="https://cdn.vatanbgs.com/Content/Images/Products/460_466/637089327869489423.jpg" Aspect="Fill" HeightRequest="150"/>

        <Image Source="https://www.blogfa.com/static/images/blogfa-logo.gif" Aspect="Fill" HeightRequest="150"/>
        <Image Source="https://blogfa.com/static/images/blogfa-logo.gif" Aspect="Fill" HeightRequest="150"/>

Why don't the photos open? cdn.vatanbgs

android
5
4.3
4.2

CheckBox value set to true even after it gets uncheck MVVM

$
0
0

Hi,

i have a check box that must be by default set to true, which i am setting in ViewModel, however after i uncheck the check box the value still stays in the list and is messing up my filter. How do i get the value to false after selecting another item?


private bool _filterAllItems = true;
public bool FilterAllItems
{
set
{

            _filterAllItems = value;
            NotifyPropertyChanged();
            if (FilterAllItems)
            {

                UserDecision.Add(_parentCategoryId = -1);
                FilterBeginnerItems = false;
                FilterIntermediateItems = false;
                FilterUpperIntermediateItems = false;
                FilterAdvancedItems = false;
            }


        }
        get => _filterAllItems;
    }

I am clearign the list in constructor
public FilterArticlesForPurchaseViewModel(INavigation navigation)
: base()
{
UserDecision.Clear();
}

How to make new dynamic UI with data binding in ViewModel?

$
0
0

Now I am making dynamic ui with xamarin forms project
I have to make dynamic buttons with get data from server in page
sure button's count would change like dynamic
I wanna draw dynamic ui with data binding
Please help me

Media Element crash when navigating away from page on Ios

$
0
0

I am getting Media Element disposing exception when I navigate back to a previous page from a page where I have my Media Element.

The managed Managed Stacktrace:

          at <unknown> <0xffffffff>
          at ObjCRuntime.Messaging:void_objc_msgSend_IntPtr <0x00007>
          at AVFoundation.AVPlayer:ReplaceCurrentItemWithPlayerItem <0x0005b>
          at Xamarin.Forms.Platform.iOS.MediaElementRenderer:Dispose <0x002b7>
          at Foundation.NSObject:Dispose <0x00023>

My steps to reproduce were:
Push new page with MediaElement. Click play on video.
Click back to pop page.
Page does pop but UI becomes unresponsive.

my code is:

public partial class SermonsMediaPlayer : ContentPage
            {
                private Sermon Sermon;

                public SermonsMediaPlayer(Sermon selectedSermon)
                {
                    InitializeComponent();

                    if (selectedSermon is null)
                    {
                        Sermon = new Sermon();
                    }

                    Sermon = selectedSermon;
                    BindingContext = Sermon;

                }

                async void Back_Clicked(object sender, EventArgs args)
                {
                    // release media resources
                    if (mediaPlayer.CurrentState == MediaElementState.Playing)
                    {

                        mediaPlayer.Stop();
                        await Navigation.PopModalAsync();
                    }

                    await Navigation.PopModalAsync();
                }

                protected override void OnDisappearing()
                {
                    base.OnDisappearing();
                }
            }


        <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="xxxViews.SermonsMediaPlayer">
            <ContentPage.ToolbarItems>
                <ToolbarItem Text="Back" Clicked="Back_Clicked" />
            </ContentPage.ToolbarItems>
            <ContentPage.Content>
                <Grid>
                    <MediaElement x:Name="mediaPlayer" Source="{Binding Url}" AutoPlay="False"
                      ShowsPlaybackControls="True" KeepScreenOn="False" />
                </Grid>
            </ContentPage.Content>
        </ContentPage>

App crashes when setting Bottom Tabbed Navigation for Android

$
0
0

Hello!
I am experiencing a strange issue in Xamarin Forms and cant find a solution.
I am trying to make a bottom tabbed page using this code:

using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
On<Xamarin.Forms.PlatformConfiguration.Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);

and i am getting this error which cause a crash:

crc64720bb2db43a66fe9.FragmentContainer.onCreateView
FragmentContainer.java, line 33
Android.Content.Res.Resources+NotFoundException: Resource ID #0x0

Stack trace

JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args)
    JniPeerMembers+JniInstanceMethods.FinishCreateInstance (System.String constructorSignature, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters)
    Android.Support.Design.Widget.BottomNavigationView..ctor (Android.Content.Context context) [0x0007a] in <2899ffe2b3534c2b9c09eb66776436ae>:0
    TabbedPageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs`1[TElement] e) D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\TabbedPageRenderer.cs:286
    VisualElementRenderer`1[TElement].SetElement (TElement element) D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:240
    IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:133
    Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Support.V4.App.FragmentManager fragmentManager, Android.Content.Context context) D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:397
    FragmentContainer.OnCreateView (Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FragmentContainer.cs:64
    Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_inflater, System.IntPtr native_container, System.IntPtr native_savedInstanceState)
    (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.60(intptr,intptr,intptr,intptr,intptr)
    android.content.res.Resources$NotFoundException: Resource ID #0x0
    android.content.res.ResourcesImpl.getValue ResourcesImpl.java:237
    android.content.res.Resources.getColorStateList Resources.java:1052
    android.content.Context.getColorStateList Context.java:703
    android.support.v7.content.res.AppCompatResources.getColorStateList AppCompatResources.java:67
    android.support.design.internal.BottomNavigationMenuView.createDefaultColorStateList BottomNavigationMenuView.java:467
    android.support.design.internal.BottomNavigationMenuView.<init> BottomNavigationMenuView.java:101
    android.support.design.internal.BottomNavigationMenuView.<init> BottomNavigationMenuView.java:86
    android.support.design.widget.BottomNavigationView.<init> BottomNavigationView.java:123
    android.support.design.widget.BottomNavigationView.<init> BottomNavigationView.java:114
    android.support.design.widget.BottomNavigationView.<init> BottomNavigationView.java:110
    crc64720bb2db43a66fe9.FragmentContainer.n_onCreateView(Native Method)
    crc64720bb2db43a66fe9.FragmentContainer.onCreateView FragmentContainer.java:33
    android.support.v4.app.Fragment.performCreateView Fragment.java:2439
    android.support.v4.app.FragmentManagerImpl.moveToState FragmentManager.java:1460
    android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState FragmentManager.java:1784
    android.support.v4.app.FragmentManagerImpl.moveToState FragmentManager.java:1852
    android.support.v4.app.BackStackRecord.executeOps BackStackRecord.java:802
    android.support.v4.app.FragmentManagerImpl.executeOps FragmentManager.java:2625
    android.support.v4.app.FragmentManagerImpl.executeOpsTogether FragmentManager.java:2411
    android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute FragmentManager.java:2366
    android.support.v4.app.FragmentManagerImpl.execPendingActions FragmentManager.java:2273
    android.support.v4.app.FragmentManagerImpl.executePendingTransactions FragmentManager.java:814
    crc64720bb2db43a66fe9.MasterDetailContainer.n_onAttachedToWindow(Native Method)
    crc64720bb2db43a66fe9.MasterDetailContainer.onAttachedToWindow MasterDetailContainer.java:62
    android.view.View.dispatchAttachedToWindow View.java:19553
    android.view.ViewGroup.dispatchAttachedToWindow ViewGroup.java:3430
    android.view.ViewGroup.dispatchAttachedToWindow ViewGroup.java:3437
    android.view.ViewGroup.addViewInner ViewGroup.java:5149
    android.view.ViewGroup.addView ViewGroup.java:4935
    android.view.ViewGroup.addView ViewGroup.java:4875
    android.view.ViewGroup.addView ViewGroup.java:4848
    mono.java.lang.RunnableImplementor.n_run(Native Method)
    mono.java.lang.RunnableImplementor.run RunnableImplementor.java:30
    android.os.Handler.handleCallback Handler.java:883
    android.os.Handler.dispatchMessage Handler.java:100
    android.os.Looper.loop Looper.java:214
    android.app.ActivityThread.main ActivityThread.java:7356
    java.lang.reflect.Method.invoke(Native Method)
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:492
    com.android.internal.os.ZygoteInit.main ZygoteInit.java:930

When i remove the SetToolbarPlacement(ToolbarPlacement.Bottom) it works as expected.

Some of the libraries:

   <PackageReference Include="Xamarin.Forms" Version="4.6.0.726" />
    <PackageReference Include="Xamarin.Android.Support.Design" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.v7.AppCompat" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.v4" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.v7.CardView" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.v7.MediaRouter" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.Core.Utils" Version="28.0.0.3" />
    <PackageReference Include="Xamarin.Android.Support.CustomTabs" Version="28.0.0.3" />

Has anyone encountered this error before?


Pages not loading. Problem with processing

$
0
0

I hope this isn't a repost. I posted my question, but can't find it. If so, sorry.

Hi Everyone! I am really trying to love Xamarin, but I'm running into some await / async / Page Load issues.
If anyone has any suggestions as to what I am doing wrong, feedback would be greatly appreciated!
The user starts my game in PlayersHandPage() and from there selects cards and clicks Play which, in turn,
calls public static async Task PlayCards() in App.Xaml.cs (below). I've tried all sorts of variations as to
what gets an async and what does not. I'm certain I'm doing something wrong! :X

In it's current state, what is happening is that while loop in "public static async Task PlayCards()"
runs forever and, on the screen, the PlayerHandPage() freezes. I can see the StateGridPage() call execute
in App.SetMainPage(new StateGridPage()); but the page never loads (on the screen) and the while loop
immediately continues looping.

Thank you again for any help! I am baffled.


//Code in App.Xaml.CS

public static async Task SetMainPage(Page newPage)
{
    Task.Run(async () =>
    {
        //await Task.Delay(500); // was 300
        Device.BeginInvokeOnMainThread(() =>
        {
            App.Current.MainPage = newPage;
        });
    });
}

// This method gets called from the PlayersHandPage().  There is a play button that gets
// pressed.  My intention is for the user, then, to be done with the PlayersHandPage,
// processing will then take place in App.Xaml.cs which will decide, via GameFunctions.PlayCard
// whether the StateGridPage (state chooser) needs to be called or whether the PlayersHandPage()
// should be reloaded.
public static async Task PlayCards()
{
    while (CurrentGame.CurrentSelectedCards.Count > 0)
    {
        await GameFunctions.PlayCard(App.CurrentGame.CurrentSelectedCards.FirstOrDefault());
    }
    SetMainPage(new PlayersHandPage());
}

//Code in GameFunctions
public static async Task PlayCard(KeyValuePair<Int32, Models.Card> myCard)
{
  // Play Card was designed to work like a state engine.  Basically, my
  // intention is to call it over and over until all cards are finished being
  // processed.  In the case of the DEA Agent, a state needs to be chosen
  // so I am trying to send the user to the StateGridPage which sets
  // App.CurrentGame.SelectedState.  Then, when the method is called again
  // it should assign the value it retrieved by calling the StateGridPage,
  // discard the card, and reload the PlayersHandPage which kicked off the
  // whole process when the user selected a card and clicked the play button
  // which in turn called PlayCards() in App.xaml.cs.
  //

switch (myCard.Value.CardType)
{
    case (Models.Card.CardTypes.DEAAgent):

        // First check to see if there are any places for a DEA Agent
        Dictionary<string, Models.USState> PossibleStates = App.CurrentGame.States.Where(x => !x.Value.HasDEA).ToDictionary(x => x.Key, x => x.Value);

    if (App.CurrentGame.CardAction.SelectedState.Length == 0) // Nothing has been done yet
    {
        App.CurrentGame.CardAction.Clear(myCard.Key, Models.CardSteps.PlayerActions.PlaceDEAAgent);
        App.CurrentGame.CardAction.Message = "Where do you want to place the DEA Agent?";

        // Navigate to State Grid 
        App.SetMainPage(new StateGridPage()); // Here I am calling the StateGridPage so the user can pick a state for the card
    }
    else // A card has already been selected
    {
        // Mark to Remove from player's hand
        alRemove.Add(myCard.Key); // Since the card is no longer in the players hand, there would be no more selected cards
                                  // however, I am currently not getting this far because the StateGridPage() is not appearing
                                  // to let me choose a state

        // Add to discard pile
        App.CurrentGame.DiscardPile.Add(myCard.Key, myCard.Value);

        // Make sure nothing else has the DEA card
        foreach (String strStateName in App.CurrentGame.States.Keys)
            App.CurrentGame.States[strStateName].HasDEA = false;

        // Move the DEA card to this state
        App.CurrentGame.States[App.CurrentGame.CardAction.SelectedState].HasDEA = true;

        // Clear the card action because we are done
        App.CurrentGame.CardAction.Clear();
    }
        break;

Xamarin forms custom webview's navigating and navigated event doesn't raise on ios

$
0
0

I am using custom web view controller for my xamarin forms project and using this one: https://github.com/xamarin/recipes/blob/master/cross-platform/xamarin-forms/Controls/DisplayPDF/iOS/CustomWebViewRenderer.cs

but Navigating and Navigated event doesn't raise for my ios project but it is working for android.

Can anybody has faced such problem? Why those two events doesn't triggering for ios but if I directly use webview instead of custom renderer then those two events are working, why can body help me?

Shell hide back button

$
0
0

HI, How to completely hide a back button in Xamarin.Forms shell?
BackButtonBehavior IsEnabled="False" -does nothing on IOS
IconOverride="" -hides it but someplace in the toolbar it is still reserved for it. and it looks like a workaround not a solution.

share Authentication access token

$
0
0

Hi
I Have xamarin forms application, authenticate with asp.net membership and give accesstoken after authenticate.
In other platforms (ex silverlight, javascrip libs ....), this token access shared accross all requests to server (ex webclient,httpclient, image source request and ...) and all requests send it to server automaticaly
how can I share this token on xamarin forms for all requests?
I cant set cookies for all requests handly. because some of them like imagesource does not have any way to set it

List all .mp3 files from Music folder of my Android device

$
0
0

Hi,
I am developing a music player app in Xamarin.Forms that uses MediaManager plugin. How can I list all .mp3 files from Music folder in my Android device and play it respectively. Also, can I get metadatas of an .mp3 files name, title, album, artist etc?

Cognitive face detection is not working when I try to upload the image with a face mask.

$
0
0

Any suggestions on how to get info of the image with a mask through microsoft's cognitive service face recognition?

When I upload an image with headwear or eyeglasses then cognitive service return the image information but when I pick an image with mask, Cognitive service doesn't return any information. That means my implementation of cognitive service is not able to recognise the image with the mask. If anybody have faced this issue and resolved it then please suggest me a solution.

`

public string subscriptionKey = "88c**************************f7";

public string uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";


//Method to pick an image from the gallery
async void btnPick_Clicked(object sender, System.EventArgs e)
    {

        try
        {
            if (!CrossMedia.Current.IsPickPhotoSupported)
            {

                return;
            }

            var file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
            {
                PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
            });
            if (file == null) return;
            imgSelected.Source = ImageSource.FromStream(() => {
                var stream = file.GetStream();
                return stream;
            });
            MakeAnalysisRequest(file.Path);
        }
        catch (Exception ex)
        {
            string test = ex.Message;
        }

    }

//convert Convert image to byte array 
public byte[] GetImageAsByteArray(string imageFilePath)
    {
        using (FileStream fileStream =
            new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
        {
            BinaryReader binaryReader = new BinaryReader(fileStream);
            return binaryReader.ReadBytes((int)fileStream.Length);
        }
    }

//Method to get image information from the detection Url
public async void MakeAnalysisRequest(string imageFilePath)
    {
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);

        string requestParameters = "returnFaceId=true&returnFaceLandmarks=false" +
            "&returnFaceAttributes=age,gender,headPose,smile,facialHair,glasses," +
            "emotion,hair,makeup,occlusion,accessories,blur,exposure,noise";

        string uri = uriBase + "?" + requestParameters;
        HttpResponseMessage response;
        byte[] byteData = GetImageAsByteArray(imageFilePath);

        using (ByteArrayContent content = new ByteArrayContent(byteData))
        {
            content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            response = await client.PostAsync(uri, content);

            string contentString = await response.Content.ReadAsStringAsync();

    //***************************************************
        //Here it return null in case of mask else its working fine 
    //***************************************************

            List<ResponseModel> faceDetails = JsonConvert.DeserializeObject<List<ResponseModel>>(contentString);

            if (faceDetails.Count != 0)
            {
                lblTotalFace.Text = "Total Faces : " + faceDetails.Count;
                lblGender.Text = "Gender : " + faceDetails[0].faceAttributes.gender;
                lblAge.Text = "Total Age : " + faceDetails[0].faceAttributes.age;

                Console.WriteLine(faceDetails[0].faceAttributes.accessories.FirstOrDefault(x => x.type == "mask").confidence);
            }

        }
    }

`

@JamesMontemagno Please suggest.

Thanks in advance..!!

Any one completed voice call using Twilio library in Xamarin ??

$
0
0

I'm facing an issue in this ConnectionOption function. I'm not able to find it in the Twilio library. So, please help me to find out the solution. It's urgent.


Picker setting Model property to null, instead of setting picker SelectedItem to value in Model

$
0
0

I've got a XF project using XAML & MVVM, developing in Visual Studio 2017. On one of my forms I've got a picker:
<Picker x:Name="pSite" Title="Site" SelectedItem="{Binding CurrentSite}" ItemsSource="{Binding SiteList}" HorizontalOptions="FillAndExpand">

The page binding is set to my view model, which has the properties of CurrentSite (which is the site the user has saved) and SiteList (which is the list of all possible sites). When I load this on my device(s) the picker shows no current selection.

To troubleshoot, I added a label bound to CurrentSite:
<Label VerticalTextAlignment="Center" Text="{Binding CurrentSite}"></Label>

This Label also shows no value. If I remove the SelectedItem="{Binding CurrentSite}" from the picker, the Label shows the correct value (as stored in the database).

When walking through the debugger (breakpoing on the setting for CurrentSite) I see where it correctly grabs the current value from the database, but it is immediately set again to null.

Any idea why this is setting my Model value to null?

I'm currently using Xamarin.Forms v2.3.4.247

Thanks,
Ian

How to implement material outlined Textfield with trailing icon in Xamarin.Forms

$
0
0

I have been trying to implement material visual for my app in Xamarin Forms. Right now i am focusing on outlined textfield with trailing icon. I have looked into customrenderer, but could not find any answer in Xamarin documentation, forums or any nuget package. Any help in this regard will be highly appreciated.

Xamarin material buttons corner radius issue

$
0
0

I am trying to implement material design in our cross platform app. when I use corner radius on button, on android it works fine but on iOS I get below result but when I remove corner radius it renders properly:

Send local notification from background service

$
0
0

Hi everyone,
I made an app for business use that has a user interface for managing some interactive functions.
What I would like to do is create a service that works in backgroud regardless of whether the app has been opened and therefore works even when the app is closed that every hour must call a webservice and based on the response send a local notification to the 'user.
I wish it worked a bit like an email client, I don't have to open the app to trigger the check.
I hope I was clear.
Looking around I created a periodic service but this only works as soon as I open the app but I leave it in the background. As soon as I close it, it no longer works.

Tanks a lot

How to retrieve an image object from imagebutton

$
0
0

Hi guys,
how can i retrieve from imagebutton.source the image object.
I have to retrive the image under five controls of type imagebutton in order to populate an array of image.

Thanks

Viewing all 89864 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>