AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Android Berechtigung CALL_PHONE ohne SIM-Karte

Android Berechtigung CALL_PHONE ohne SIM-Karte

Ein Thema von michaelg · begonnen am 15. Apr 2019 · letzter Beitrag vom 20. Dez 2021
Antwort Antwort
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#1

Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 15. Apr 2019, 17:28
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!
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#2

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 15. Apr 2019, 19:51
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.
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#3

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 16. Apr 2019, 07:34
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%.
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#4

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 20. Dez 2021, 14:34
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.
  Mit Zitat antworten Zitat
junglist

Registriert seit: 21. Jul 2015
Ort: Schweiz
36 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 20. Dez 2021, 15:31
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.

Geändert von junglist (20. Dez 2021 um 15:33 Uhr)
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#6

AW: Android Berechtigung CALL_PHONE ohne SIM-Karte

  Alt 20. Dez 2021, 15:44
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 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