Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
lang:android:permission [2022/09/27 12:44] – Ajout de "Permission des dossiers" root | lang:android:permission [2023/04/12 13:37] (Version actuelle) – Ajout de "Autorisation avec adb" root |
---|
| |
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 -> { |
} | } |
</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==== |
* 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 application. Il 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}} |
| |