Adaptation de l'autorisation d'accès aux fichiers multimédias Android 13

Réimprimé de : # Google技术领文# Android 13 Media File Access Permission Adaptation-51CTO Developer Training Camp-51CTO.COM

Comme nous le savons tous, à partir d'Android 4.4 (Api Level 19), les développeurs souhaitent développer des fonctions permettant d'accéder aux fichiers multimédias fournis par d'autres applications sur un espace de stockage externe, telles que la personnalisation des avatars des utilisateurs, l'envoi de commentaires graphiques, la lecture de musique et l'édition de vidéos. Une autorisation importante est requise - READ_EXTERNAL_STORAGE. Android 13 (niveau API 33) subdivise davantage READ_EXTERNAL_STORAGE en READ_MEDIA_IMAGE pour lire des images, READ_MEDIA_VIDEO pour lire des vidéos et READ_MEDIA_AUDIO pour lire de l'audio. Cet article explique principalement comment adapter Android 13 en termes d'autorisations de fichiers multimédias.
Dans le manifeste Android, faites ce qui suit modifications des autorisations de déclaration :

<!--  一般来说,允许用户自定义头像的app都需要这个权限  -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"
    android:minSdkVersion = "33"/>
<!--  如果你想开发音乐播放器之类需要获取音频的app,加上这个权限  -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"
    android:minSdkVersion = "33"/>
<!--  如果你想开发视频编辑器之类需要获取视频的app,加上这个权限  -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"
    android:minSdkVersion = "33"/>
<!--  向前兼容  -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />

Ensuite, demandez l'autorisation dans le code :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
   ActivityCompat.requestPermissions( activity,new String[]{
           READ_MEDIA_IMAGES,
           READ_MEDIA_AUDIO,
           READ_MEDIA_VIDEO
   },MEDIA_READ_REQUEST_CODE);
}else{
   ActivityCompat.requestPermissions( activity,new String[]{
           READ_EXTERNAL_STORAGE
   },MEDIA_READ_REQUEST_CODE);
}

  • En plus d'améliorer les autorisations d'accès aux fichiers multimédias, Android 13 fournit également aux utilisateurs un nouveau sélecteur de fichiers multimédias, de sorte qu'ils n'ont pas besoin d'accorder l'accès à l'ensemble de la bibliothèque multimédia à l'application, et résout également le problème des versions précédentes. ne prend pas en charge les sélections multiples. Le problème.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
    // 打开Android 13自带的媒体文件选择器(默认单选)
    Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
    // 如果想多选,就加上这行代码,其中MediaStore.getPickImagesMaxLimit()代表设备的Provider最大支持的多选数量
    intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, Math.min(10,MediaStore.getPickImagesMaxLimit()));
    // 如果只能选择视频,加上这行代码
    intent.setType("video/*");
    // 如果想只选择图片,加上这行代码
    intent.setType("image/*");
    // 如果想限定某种格式的图片或视频,可以把上边的*改成gif或者mp4
    intent.setType("image/gif");
    startActivityForResult(intent, PHOTO_PICKER_MULTI_SELECT_REQUEST_CODE);
}

  • Il convient de noter que le sélecteur de fichiers multimédias fourni avec Android 13 affiche un BottomSheetDialog en demi-écran en mode de sélection unique. De plus, le premier élément de RecyclerView ne peut pas être configuré pour ouvrir la caméra (similaire aux médias dans WeChat cercle d'amis).La fonction du sélecteur de fichiers), et il n'est pas possible de personnaliser le thème de l'interface utilisateur (boss: faites-le comme iOS), la chose la plus importante est qu'à l'époque où le sélecteur de fichiers multimédia intégré ne ne prend pas en charge les sélections multiples, chaque programmeur Android sait comment utiliser le fournisseur de contenu et RecyclerView pour réaliser la fonction de sélection multiple des images, donc personnellement, je ne recommande pas d'utiliser cet outil intégré officiel.

おすすめ

転載: blog.csdn.net/github_27263697/article/details/131633314