Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Android Berechtigung CALL_PHONE ohne SIM-Karte (https://www.delphipraxis.net/200382-android-berechtigung-call_phone-ohne-sim-karte.html)

michaelg 15. Apr 2019 16:28

Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Hallo,

in der alten Version einer App (Delphi 10.2.2) habe ich die Berechtigung CALL_PHONE aktiviert im Manifest, weil ich eine kleine nützliche Funktion in der App habe, die eine Telefonnummer anruft, wenn man draufklickt. Dazu hatte ich IFMXPhoneDialerService benutzt. Ich konnte die App auf jedem Gerät installieren, egal ob es überhaupt einen SIM-Karten-Slot hatte. Wenn die Telefon-Funktion nicht vom Gerät möglich war, habe ich die Funktion halt deaktiviert.

Google hat mittlerweile die Berechtigungssituation verändert. Stelle ich eine aktuelle Version mit RIO 10.3.1 und 28er-SDK (25.2.5) in den Playstore, meckert Google, dass nur noch 59% aller Endgeräte unterstützt werden. Das heisst, ich kann die App auf einem Tablet, was keinen Sim-Karten-Slot hat, nicht mehr installieren. Man findet die App von solch einem Gerät aus nicht mal mehr im Playstore, sie wird einfach nicht angeboten.

Mir ist klar, dass man im Vorfeld die Rechte festlegen muss, mir ist auch klar, dass man am Besten vor jedem Funktionsaufruf, der eine Berechtigung benötigt, noch mal abfragt, ob man das Recht hat.

Ich kann den Nutzern ohne SIM-Karten-Slot nicht das Update verweigern, möchte aber auch nicht auf die Funktion des Anrufens verzichten, sofern das Gerät es unterstützt. Was kann ich tun? Um alle Geräte weiter unterstützen zu können, werde ich das CALL_PHONE aus dem Manifest rausnehmen müssen, aber was mach ich mit der Funktion? So viele Geräte nur aufgrund einer nicht vorhandenen technischen Voraussetzung auszuklammern, ist sehr blöd, zumal man das ja auch im Quelltext abfragen kann, ob die technische Voraussetzung erfüllt ist.

Die Anruffunktion muss nicht von der App gesteuert oder kontrolliert werden, ich möchte einfach nur den Anruf auslösen, und zwar nicht so, dass der User sich die Nummer merken oder auf einen Zettel schreiben muss, um sie dann manuell einzutippen (auch nicht über Zwischenablage). Gibt es eine Funktion, die ich nicht kenne, die die Nummer an das Telefon einfach weitergibt? Meinetwegen darf das Telefon dann auch fragen, ob man das wirklich will. Sollte allerdings sowohl unter Android als auch unter iOS funktionieren.

Oder gibt es einen Trick, mit dem der Playstore (mit CALL_PHONE im Manifest) die "nicht unterstützten Geräte" doch zulässt?

Zwei verschiedene Apps nur deswegen in den Store zu stellen, ist für mich keine Alternative.

Jaja, ich weiß, ich komme immer mit bekloppten Spezialproblemen, aber trotzdem schon mal im voraus danke für Eure Hilfe!

Rollo62 15. Apr 2019 18:51

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Bist Du sicher das die Reduzierung auf 59% nur von der SIM-Karten Berechtigung kommt ?
Ich denke dass die Umstellung von Minimum Api14 auf Api19 glaube ich,
auch damit zu tun hat.

michaelg 16. Apr 2019 06:34

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Mit der API-Umstellung hat das in diesem Fall nach meiner Meinung nichts zu tun. Ich lade ja dasselbe Programm hoch, nur einmal mit und einmal ohne CALL_PHONE.

Ohne PHONE_CALL sind es 9932 Geräte, die unterstützt werden und er zeigt auch direkt an, dass 0% nicht unterstützt werden. Mit CALL_PHONE wird schon nach dem Hochladen direkt angezeigt, dass es Warnungen gibt, und diese beziehen sich auf die Anzahl der unterstützten Geräte und da steht dann tatsächlich 59%.

michaelg 20. Dez 2021 13:34

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Moin noch mal,

ich muss das Thema noch mal aufgreifen, da es mich aktuell wieder wurmt. Dies mal in Kurzform:

Ich möchte auf einem Android eine dort angezeigte Telefonnummer wählen können, mehr nicht.

Ich benötige CALL_PHONE als Recht, um das machen zu können, kann dann die App aber nicht mehr auf einem "nur Wifi-Tablet" installieren. Der Play-Store bietet die App nicht an.
Lasse ich das Recht weg, kann ich es auch auf einem Tablet installieren, aber ich kann die Telefonnummer nicht mehr wählen, auch nicht mit einem richtigen Phone.

Hat da jemand mittlerweile einen Workaround gefunden? Ich kann doch nicht der Einzige sein, der dieses Problem hat.

junglist 20. Dez 2021 14:31

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Hast du schon probiert die Nummer einfach als URL aufzurufen?
Code:
OpenURL('tel://0447777777')
Die Prozedur musst du selbst erstmal basteln was aber nicht zu schwer sein sollte.
Bei dem User öffnet sich daraufhin die Telefon- oder Kontakt-App, mit der Nummer eingegeben. Er muss also nur noch auf "Anrufen" drücken.

So braucht es auch keine CALL_PHONE Permission. Funktioniert auf Android/iOS/Windows.

michaelg 20. Dez 2021 14:44

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte
 
Danke für die schnelle Antwort. Ich habe gerade einen Codeschnipsel gefunden, der für Android funktioniert. Das müsste in etwa mit dem übereinstimmen, was Du meintest.

Es gibt also den Unterschied zwischen ACTION_CALL und ACTION_DIAL. Für meine Zwecke reicht es vollkommen, mit DIAL zu arbeiten. Und dann braucht man echt keine Berechtigung CALL_PHONE. Endlich eine Lösung. DANKE!

Code:
uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net;

procedure Dial(const ANumber: string);
var
  LIntent: JIntent;
begin
  LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_DIAL);
  if LIntent.resolveActivity(TAndroidHelper.Context.getPackageManager) <> nil then
  begin
    LIntent.setData(TJnet_Uri.JavaClass.parse(StringToJString('tel:' + ANumber)));
    TAndroidHelper.Context.startActivity(LIntent);
  end
  else
    ShowMessage('Cannot dial!');
end;

Hier die Quelle:
https://stackoverflow.com/questions/...tent-in-delphi


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz