Ich verwende den folgenden Code, um einen Anruf in Android zu tätigen, aber es gibt mir eine Sicherheitsausnahme. Bitte helfen Sie.
posted_by = "111-333-222-4";
String uri = "tel:" + posted_by.trim() ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
Berechtigungen
<uses-permission android:name="android.permission.CALL_PHONE" />
Ausnahme
11-25 14:47:01.661: ERROR/AndroidRuntime(302): Uncaught handler: thread main exiting due to uncaught exception
11-25 14:47:01.681: ERROR/AndroidRuntime(302): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:111-333-222-4 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43d32508 302:com.Finditnear/10026} (pid=302, uid=10026) requires android.permission.CALL_PHONE
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.os.Parcel.readException(Parcel.java:1218)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.os.Parcel.readException(Parcel.java:1206)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1214)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Activity.startActivityForResult(Activity.java:2749)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.app.Activity.startActivity(Activity.java:2855)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at com.Finditnear.PostDetail$2$1$1$1.onClick(PostDetail.java:604)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:884)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.ListView.performItemClick(ListView.java:3285)
11-25 14:47:01.681: ERROR/AndroidRuntime(302): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
Diese Demo wird für Sie hilfreich sein ...
Klicken Sie beim Anrufen auf:
Erlaubnis im Manifest:
quelle
Elegantere Option:
quelle
Verwenden Sie die Aktion ACTION_DIAL in Ihrer Absicht. Auf diese Weise benötigen Sie keine Berechtigung. Der Grund, warum Sie die Berechtigung für ACTION_CALL benötigen, besteht darin, einen Anruf zu tätigen, ohne dass der Benutzer etwas unternimmt.
quelle
Alles ist gut.
Ich habe gerade das Tag für Anrufberechtigungen vor dem Tag für die Anwendung in der Manifestdatei platziert
und jetzt funktioniert alles gut.
quelle
WICHTIGE NOTIZ:
Wenn Sie verwenden
Intent.ACTION_CALL
, müssen Sie dieCALL_PHONE
Berechtigung hinzufügen .Es ist nur dann in Ordnung, wenn Sie nicht möchten, dass Ihre App in Google Play für Tablets angezeigt wird, die keine SIM-Karte akzeptieren oder kein GSM haben.
IN IHRER AKTIVITÄT:
MANIFEST:
Wenn dies für Ihre App keine wichtige Funktion ist, versuchen Sie, keine
CALL_PHONE
Berechtigungen hinzuzufügen .ANDERE LÖSUNG:
Um die Telefon-App mit der auf dem Bildschirm eingegebenen Nummer anzuzeigen, muss der Benutzer nur auf die Anruftaste klicken:
Hierfür ist keine Erlaubnis erforderlich.
quelle
Nur der einfache Oneliner ohne zusätzliche Berechtigungen:
quelle
Verwenden Sie diesen vollständigen Code
quelle
Erlaubnis im Manifest anfordern
Verwenden Sie zum Anrufen diesen Code
quelle
Berechtigung in AndroidManifest.xml
Vollständiger Code:
quelle
Berechtigungen:
Absicht:
quelle
Sie können dies auch verwenden:
quelle
Um eine Anrufaktivität mit Absichten durchzuführen, sollten Sie die entsprechenden Berechtigungen anfordern.
Dazu geben Sie Verwendungsberechtigungen in die Datei AndroidManifest.xml ein.
Fügen Sie dann den folgenden Code in Ihre Aktivität ein
quelle
Für Anrufe vom Dialer (keine Erlaubnis erforderlich):
Für direkten Anruf von der App (Erlaubnis erforderlich):
Genehmigung:
quelle
Um dies zu vermeiden, können Sie über die GUI Berechtigungen eingeben. Eclipse kümmert sich darum, wo das Berechtigungs-Tag eingefügt werden soll, und ist häufig nicht korrekt
quelle
quelle
In Android müssen Sie für bestimmte Funktionen die Berechtigung zur Manifest-Datei hinzufügen.
6.Speichern Sie die Manifestdatei und führen Sie dann Ihr Projekt aus. Ihr Projekt sollte jetzt wie erwartet ausgeführt werden.
quelle
^ Die Antwort liegt in der Ausnahmeausgabe "
requires android.permission.CALL_PHONE
" :)quelle
quelle
quelle