2016-05-06 6 views
1

In meiner Android Anwendung möchte ich automatisch einen Anruf tätigen, wenn Benutzer auf die Schaltfläche klicken. Ich habe den unten Satz von Code verwendet diese FunktionalitätAndroid Intent ACTION_CALL kein Telefonanruf

Intent intent = new Intent(Intent.ACTION_CALL); 
       intent.setData(Uri.parse("tel:911")); 
       startActivity(intent); 

und in meinem AndroidManifest.xml Ich habe hinzugefügt zu dieser <uses-permission android:name="android.permission.CALL_PHONE" /> Erlaubnis zu erreichen.

Aber es ist nur das Öffnen der Dialer-Pad mit dem angegebenen 911 Nein statt einen Anruf tätigen.

+0

ändern Sie Ihre 'phno =" tel: 10digits ";' und versuchen Sie es erneut. –

+0

das ist das einzige Verhalten von 'ACTION_CALL' – Amy

Antwort

4

Zumindest in den USA ist 911 eine Notrufnummer. CALL_PHONE ist nicht ausreichend, um diese Nummer anzurufen. Hierfür gibt es eine separate Berechtigung (CALL_PRIVILEGED?), Die von normalen SDK-Apps nicht gehalten werden kann.

UPDATE: Ich erinnerte mich richtig. Hier ist die Android 6.0-Plattform manifest Eintrag für diese Berechtigung:

<!-- @SystemApi Allows an application to call any phone number, including emergency 
     numbers, without going through the Dialer user interface for the user 
     to confirm the call being placed. 
     <p>Not for use by third-party applications. --> 
    <permission android:name="android.permission.CALL_PRIVILEGED" 
     android:protectionLevel="signature|privileged" /> 
+0

, obwohl ich ' in AndroidManifest.xml es nicht automatisch hinzugefügt rufen Sie "911" Nr. aber es ruft andere Nummern an. – Jamal

+0

@Jamal: Das liegt daran, dass Sie die Berechtigung 'CALL_PRIVILEGED' nicht behalten können, es sei denn, Sie erstellen ein eigenes benutzerdefiniertes ROM. – CommonsWare

+0

Die 'targetSdkVersion' meiner Anwendung ist' 19'. '' Wenn add '' diese Zeile in meiner 'AndroidManifest.xml', zeigt es ' error: Fehler: String-Typen nicht erlaubt (bei 'protectionLevel' mit Wert 'Signatur | privilegiert'). ' – Jamal

0

Versuchen mit Intent.ACTION_DIAL statt. Dies ist der Code, den ich verwendet habe und es hat gut funktioniert:

Intent callIntent = new Intent(Intent.ACTION_DIAL); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);  
    callIntent.setData(Uri.parse("tel://911")); 
    startActivity(callIntent); 

Aktualisiert durch FLAG_ACTIVITY_NO_USER_ACTION hinzufügen. Testen Sie es und sehen Sie, ob es funktioniert. Ich sehe in dir den Erlaubnisteil deines Manifests. Bitte denken Sie daran, Ihre gesamte Manifest-Datei einzuschließen, damit wir sehen können, dass auch hier alles in Ordnung ist.

+0

Ich habe das versucht, aber es konnte nicht helfen. – Jamal

+0

Bekannt. Hat es also einen Fehler gegeben oder zeigt es den Dialer mit der Nummer an? Ich habe die Antwort aktualisiert - speziell habe ich eine neue Flagge hinzugefügt. Hoffentlich hilft es jetzt. – ishmaelMakitla

+0

Nein, ishmaelMakitla es ist nur Dialer Pad allein zu öffnen, nicht einen Anruf tätigen. Ich habe es mit ACTION_CALL versucht – Jamal

0

Ich hatte auch das gleiche Problem. Höchstwahrscheinlich kann es sein, dass unser Gerät die Erlaubnis zu dieser App erteilt, dann kann es funktionieren. Geh einfach zu den Einstellungen und gewähre die Erlaubnis von "Telefon".