[Android] Call direkt starten

  • Xamarin.Android

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    [Android] Call direkt starten

    Hallo Leute

    Ich arbeite gerade an einer Android App mit Xamarin.Forms.

    Ich möchte eine art kleines Firmen-Telefonbuch machen. Wir haben ein "Callback" System in der Firma wo in einer Datenbank alle Mitarbeiter gepsiechert sind. Dieses nutze ich um es mittels Azure Functions in einer CosmosDB zu syncen. Diese Daten hole ich in der App ab und möchte nun die Durchwahl eines Users direkt anrufen.

    Soweit ist das ja Easy wenn ich mit: Device.OpenUri(new Uri($"tel:{Item.DirectDialNumber}")); quasi die Dialer App öffne.
    Aber ich hätte gerne das ich direkt den Anruf starten kann.

    Jetzt habe ich ein bischen gesucht aber da wird auf jeder Seite ein anderes Plugin vorgeschlagen. Hat jemand erfahrung mit einem Plugin bei welchem das funzt oder eine Native lösung auf die ich von der PCL aus über ein Service zugreifen kann.

    Ich würde gerne von meinem Command im ViewModel aus direkt eine Durchwahl oder sonst irgendeines Nummer Anrufen können.

    PS: In späterer Folge vieleicht sogar Verbinden können. Das geht bei uns mit *#{durchwahl}# aber das sollte man dann ja auch senden können denke ich.

    Vielen lieben Dank schon mal
    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Unter Java brauch ich nur einen Intent und die Permission android.permission.CALL_PHONE, gibt's das auch bei Xamarin?

    Java-Quellcode

    1. Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+pnum));
    2. startActivity(intent);

    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Gute Frage.

    Ich habe nun ein paar Dinge probiert aber unter Xamarin komme ich da nicht klar. Da muss sicher wieder was auf Nativer ebend gemacht werden, was mir aber im Moment noch zu hoch ist.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Leute

    Ich habs nun geschafft ;)

    Erstmal benötigt es ein Plugin um einen Aruf direkt tätigen zu können:
    Das Xam.Plugins.Messaging

    Damit dieses Plugin anrufe tätigen kann benötigt es in der AndroidManifest das folgende Recht:
    android.permission.CALL_PHONE

    Damit ist es aber leider nocht nicht getan da seit Android 6.0 noch zusätzlich eine bestätigung für den Zugriff auf Telefonanrufe erfolgen muss. Hierfür gibt es folgendes Plugin:
    Plugin.Permissions

    Beide Plugins müssen auf höhe des Android Projekt eingerichtet werden was aber im jeweiligem Plugin beschrieben steht.

    Das mit folgendem Code einen Anruf tätigen:

    C#-Quellcode

    1. private async void ExecuteCallCommand()
    2. {
    3. var status = await CrossPermissions.Current.CheckPermissionStatusAsync<PhonePermission>();
    4. if (status != PermissionStatus.Granted)
    5. {
    6. if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Phone))
    7. {
    8. await Application.Current.MainPage.DisplayAlert("Rechte benötigt", "Erweiterte Rechte werden benötigt um Anrufe tätigen zu können...", "OK");
    9. }
    10. status = await CrossPermissions.Current.RequestPermissionAsync<PhonePermission>();
    11. }
    12. if (status == PermissionStatus.Granted)
    13. {
    14. var phoneDialer = CrossMessaging.Current.PhoneDialer;
    15. if (phoneDialer.CanMakePhoneCall) phoneDialer.MakePhoneCall(Item.DirectDialNumber,Item.FullName);
    16. }
    17. else if (status == PermissionStatus.Unknown)
    18. {
    19. var phoneDialer1 = CrossMessaging.Current.PhoneDialer;
    20. if (phoneDialer1.CanMakePhoneCall) phoneDialer1.MakePhoneCall(Item.DirectDialNumber, Item.FullName);
    21. }
    22. else
    23. {
    24. Device.OpenUri(new Uri($"tel:{Item.DirectDialNumber}"));
    25. }
    26. }



    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()