Outils pour utilisateurs

Outils du site


lang:android:permission

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:android:permission [2022/09/27 12:44] – Ajout de "Permission des dossiers" rootlang:android:permission [2023/04/12 13:37] (Version actuelle) – Ajout de "Autorisation avec adb" root
Ligne 119: Ligne 119:
  
 Cela se fait en ouvrant une fenêtre dédiée à la modification des droits. On commence par vérifier si on a les droits avant. Puis on vérifie si on a les droits à la fermeture de la fenêtre. Cela se fait en ouvrant une fenêtre dédiée à la modification des droits. On commence par vérifier si on a les droits avant. Puis on vérifie si on a les droits à la fermeture de la fenêtre.
 +
 +Ne pas appelé ''registerForActivityResult'' depuis le constructeur mais depuis ''onCreate''. Si la vue est recréée (''onCreate''), l%%'%%''intent'' est ''unregister''. Il faut donc le ''register'' à nouveau.
 +
 +Le composant ''ActivityResultLauncher'' ne doit pas être appelé depuis ''onCreate'' mais après.
 +
 +<blockquote>Note: You must call registerForActivityResult() before the fragment or activity is created; you cannot launch the ActivityResultLauncher until the fragment or activity's Lifecycle has reached CREATED.<cite>[[https://developer.android.com/training/basics/intents/result|Getting a result from an activity]] {{ :lang:android:permission:getting_a_result_from_an_activity_android_developers_17_01_2023_14_24_47_.html |Archive du 20/09/2022 le 17/01/2023}}</cite></blockquote>
  
 <code java> <code java>
-private ActivityResultLauncher<Intent> requestManageAllFilesLauncher = registerForActivityResult(+private ActivityResultLauncher<Intent> requestManageAllFilesLauncher; 
 + 
 +public void onCreate(Bundle savedInstanceState) 
 +  requestManageAllFilesLauncher = registerForActivityResult(
   new ActivityResultContracts.StartActivityForResult(),   new ActivityResultContracts.StartActivityForResult(),
     result -> {     result -> {
Ligne 139: Ligne 148:
 } }
 </code> </code>
 +
 +Message d'erreur si le composant a été ''unregister'' dû à un nouveau cycle de vie : ''java.lang.IllegalStateException: Attempting to launch an unregistered ActivityResultLauncher with contract androidx.activity.result.contract.ActivityResultContracts$StartActivityForResult@27807b and input Intent { act=android.intent.action.OPEN_DOCUMENT_TREE }. You must ensure the ActivityResultLauncher is registered before calling launch().''
  
 [[https://developer.android.com/training/basics/intents/result#custom|Creating a custom contract]] {{ :lang:android:permission:getting_a_result_from_an_activity_android_developers_26_09_2022_14_58_57_.html |Archive du 20/09/2022 le 26/09/2022}} [[https://developer.android.com/training/basics/intents/result#custom|Creating a custom contract]] {{ :lang:android:permission:getting_a_result_from_an_activity_android_developers_26_09_2022_14_58_57_.html |Archive du 20/09/2022 le 26/09/2022}}
 +
 +===Autorisation avec adb===
 +
 +Pour les tests, il peut être nécessaire d'activer certaines autorisations sans interaction avec l'utilisateur.
 +
 +<code bash>
 +adb shell appops set --uid com.package MANAGE_EXTERNAL_STORAGE allow
 +</code>
 +
 +Pour avoir la liste des permissions, lancer :
 +
 +<code bash>
 +adb shell 'pm list permissions | sort'
 +</code>
  
 ====Permission des dossiers==== ====Permission des dossiers====
Ligne 150: Ligne 175:
   * Dossier home de l'application ou ''/data/data''   * Dossier home de l'application ou ''/data/data''
  
-[[https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission|Removed execute permission for app home directory]] {{ :lang:android:permission:behavior_changes_apps_targeting_api_29_android_developers_27_09_2022_12_40_59_.html |Archive du 19/09/2022 le 27/09/2022}}+Ne doit servir que pour stocker des données spécifiques à chaque applicationIl n'est pas possible d'y stocker des exécutables.
  
-Pour exécuter des binaires externes, il faut les embarquer dans l'apk.+Pour exécuter des binaires externes, il faut les [[lang:android:packaging#embarquer_un_executable_pour_l_executer_manuellement|embarquer dans l'apk]]. 
 + 
 +[[https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission|Removed execute permission for app home directory]] {{ :lang:android:permission:behavior_changes_apps_targeting_api_29_android_developers_27_09_2022_12_40_59_.html |Archive du 19/09/2022 le 27/09/2022}}
  
lang/android/permission.1664275478.txt.gz · Dernière modification : de root