System Attachments Picker

The Stream Chat Flutter SDK now provides an option to use your device’s system media picker instead of our custom attachment picker. This feature is especially important for compliance with Google’s updated Photo and Video Permissions policy, which requires apps with infrequent photo access needs to use system pickers instead of requesting broad permissions.

Why Use the System Attachment Picker?

  1. Google Play Policy Compliance: Beginning in early 2025, only apps with core photo/video functionality can use READ_MEDIA_IMAGES and READ_MEDIA_VIDEO permissions.
  2. Reduced Permissions: Using the system picker eliminates the need for your app to request broad media access permissions.
  3. Familiar User Experience: Users interact with their device’s standard picker interface which they already know how to use.
  4. Simplified Integration: No need to handle permission requests and their associated complexities.

How to Enable the System Attachment Picker

The SDK provides multiple ways to enable the system attachment picker:

  1. Enable for a specific message input
StreamMessageInput(
  ...
  useSystemAttachmentPicker: true,
)
  1. Enable globally using theme
StreamChatTheme(
  data: StreamChatThemeData(
    messageInputTheme: StreamMessageInputThemeData(
      useSystemAttachmentPicker: true,
    ),
  ),
)

We advice using the latter approach to ensure a consistent user experience across your app.

Removing Unnecessary Permissions

When using the system attachment picker, we no longer require the following permissions and can safely remove them from the AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

By using the system attachment picker, you ensure your app remains compliant with platform guidelines while providing a familiar experience to your users.

© Getstream.io, Inc. All Rights Reserved.