PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → [WM20] Android Java : android.permission.READ_CALL_LOG or WRITE_CALL_LOG
[WM20] Android Java : android.permission.READ_CALL_LOG or WRITE_CALL_LOG
Débuté par Philippe Pasquali, 18 jan. 2017 15:18 - 4 réponses
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 18 janvier 2017 - 15:18
Bonjour,
WindevMobile 20 - Android
J'ai besoin d'ajouter la permission "READ_CALL_LOG" or "WRITE_CALL_LOG", mais quand je génère l'application, aucune des deux n'apparait dans la liste : "Permission de l'application"...
Une idée ?
Merci d'avance
Posté le 18 janvier 2017 - 18:36
Il est possible de les ajouter manuellement lors de la génération de ton APK avec le bouton ajouter en bas a gauche de la fenêtre "Permissions de l'application"
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 19 janvier 2017 - 11:52
Bonjour,
Merci de votre réponse, mais le problème ne se situe pas sur "comment ajouter une permission", mais sur le fait que ces 2 permissions n'existent pas dans la table "Sélection des permissions". Hors ce petit bout de code java (sensé renvoyer le journal des appels) plante car il a besoin d'une de ces deux autorisations.

import android.provider.CallLog;
import android.database.Cursor;
import android.net.Uri;
import android.content.Context;
import android.content.Intent;

PUBLIC static string getLastCalls()
{
string callList = "";
string columns[] = new string[] {
CallLog.Calls._ID, // 0 -
CallLog.Calls.NUMBER, // 1 - TEXT - The phone number as the user entered it.
CallLog.Calls.DATE, // 2 - INTEGER (long) - The date the call occured, in milliseconds since the epoch
CallLog.Calls.DURATION, // 3 - INTEGER (long) - The duration of the call in seconds
CallLog.Calls.TYPE}; // 4 - String - The type of the call (incoming, outgoing or missed).
Cursor c;

c = getContexteApplication().getContentResolver().query(Uri.parse("content://call_log/calls"), columns, null, null, "Calls._ID DESC");
WHILE (c.moveToNext()) {
callList += c.getString(1) + "\t" ;
callList += c.getString(4) + "\r\n";
}
RETURN callList;
}
Membre enregistré
945 messages
Popularité : +102 (110 votes)
Posté le 19 janvier 2017 - 12:12
[RÉSOLU]
En fouillant sur le site https://developer.android.com j'ai trouvé ceci :
READ_CALL_LOG added in API level 16
String READ_CALL_LOG
Allows an application to read the user's call log.
Note: If your app uses the READ_CONTACTS permission and both your minSdkVersion and targetSdkVersion values are set to 15 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 16 or higher.

En ajoutant tout simplement l'autorisation "READ_CONTACTS" cela à suffit pour faire disparaitre l'erreur...
Membre enregistré
84 messages
Popularité : +2 (2 votes)
Posté le 19 janvier 2017 - 12:18
d'apres la doc Google :

READ_CALL_LOG
Added in API level 16
String READ_CALL_LOG
Allows an application to read the user's call log.
Note: If your app uses the READ_CONTACTS permission and both your minSdkVersion and targetSdkVersion values are set to 15 or lower, the system implicitly grants your app this permission. If you don't need this permission, be sure your targetSdkVersion is 16 or higher.
Protection level: dangerous
Constant Value: "android.permission.READ_CALL_LOG"


donc, suivant le rest de tes reglage, tu n'as peut-être besoin d'ajouter que READ_CONTACTS
idem pour WRITE_CALL_LOG et WRITE_CONTACTS.

sinon, dans la génération de l'apk, tu va 2 étapes plus loin, pas "Configuration, là où tu sélection le chemin du SDK. Tu cliques sur "configuration avancée", puis "éditer le manifeste", et tu ajoute a la mano tes permissions.

--
SPEETBOX by STARCK - SPEETA