J'utilise le code suivant pour passer un appel sur Android, mais cela me donne une exception de sécurité, aidez-moi.
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);
autorisations
<uses-permission android:name="android.permission.CALL_PHONE" />
Exception
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)
Cette démo vous sera utile ...
Sur le bouton d'appel, cliquez sur:
Autorisation dans le manifeste:
la source
Option plus élégante:
la source
Utilisez l'action ACTION_DIAL dans votre intention, de cette façon, vous n'aurez besoin d'aucune autorisation. La raison pour laquelle vous avez besoin de l'autorisation avec ACTION_CALL est de passer un appel téléphonique sans aucune action de l'utilisateur.
la source
Tout va bien.
je viens de placer la balise des autorisations d'appel avant la balise d'application dans le fichier manifeste
et maintenant tout fonctionne bien.
la source
NOTE IMPORTANTE:
Si vous utilisez,
Intent.ACTION_CALL
vous devez ajouterCALL_PHONE
autorisation.Ce n'est correct que si vous ne voulez pas que votre application apparaisse dans Google Play pour les tablettes qui ne prennent pas de carte SIM ou qui n'ont pas de GSM.
DANS VOTRE ACTIVITÉ:
MANIFESTE:
Donc, si ce n'est pas une fonctionnalité critique pour votre application, essayez de ne pas ajouter d'
CALL_PHONE
autorisation.AUTRE SOLUTION:
Est d'afficher l'application Téléphone avec le numéro écrit à l'écran, donc l'utilisateur n'aura qu'à cliquer sur le bouton d'appel:
Aucune autorisation nécessaire pour cela.
la source
Juste le simple oneliner sans aucune autorisation supplémentaire nécessaire:
la source
utilisez ce code complet
la source
Demande d'autorisation dans le manifeste
Pour appeler, utilisez ce code
la source
Autorisation dans AndroidManifest.xml
Code complet:
la source
Autorisations:
Intention:
la source
Vous pouvez également l'utiliser:
la source
Pour effectuer une activité d'appel à l'aide d'intentions, vous devez demander les autorisations appropriées.
Pour cela, vous incluez les autorisations d'utilisation dans le fichier AndroidManifest.xml.
Incluez ensuite le code suivant dans votre activité
la source
Pour l'appel du composeur (aucune autorisation nécessaire):
Pour un appel direct depuis l'application (autorisation nécessaire):
Autorisation:
la source
Pour éviter cela - on peut utiliser l'interface graphique pour entrer des autorisations. Eclipse prend soin de l'endroit où insérer la balise d'autorisation et le plus souvent, ce n'est pas correct
la source
la source
Dans Android, pour certaines fonctionnalités, vous devez ajouter l'autorisation au fichier Manifest.
6.Enregistrez le fichier manifeste, puis exécutez votre projet. Votre projet devrait maintenant s'exécuter comme prévu.
la source
^ La réponse réside dans la sortie d'exception "
requires android.permission.CALL_PHONE
" :)la source
la source
la source