Messaging: Use ActivityResultContracts for media and contacts

Instead of handling showing and picking the media ourselves,
use existing AcitivityResultContracts to pick images, videos
or contacts

Change-Id: I20079ad94882cc6bbfeae8d57ca0e4aa30612c01
This commit is contained in:
Michael W
2024-12-26 15:54:37 +01:00
parent 7f9087a49e
commit e335f6bec8
24 changed files with 148 additions and 1481 deletions
-103
View File
@@ -1,103 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<com.android.messaging.ui.mediapicker.GalleryGridItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/gallery_image_cell_size"
android:background="@color/gallery_image_default_background"
android:clickable="true">
<!-- Thumbnail for image and video contents. -->
<com.android.messaging.ui.AsyncImageView
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<!-- Additional info such as icon, name and etc. -->
<RelativeLayout
android:id="@+id/additional_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="gone" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/file_info" >
<ImageView
android:id="@+id/icon"
android:layout_width="@dimen/gallery_icon_size"
android:layout_height="@dimen/gallery_icon_size"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:background="@color/background_item_transparent"
android:visibility="gone" />
</FrameLayout>
<!-- File info for audio contents only -->
<LinearLayout
android:id="@+id/file_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="4dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:orientation="vertical"
android:visibility="gone" >
<TextView
android:id="@+id/file_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:textAppearance="@android:style/TextAppearance.Material.Subhead" />
<TextView
android:id="@+id/file_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:gravity="right"
android:textAppearance="@android:style/TextAppearance.Material.Caption" />
</LinearLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:background="@drawable/gallery_image_background_selector" />
<CheckBox
android:id="@+id/checkbox"
style="@style/GalleryGridItemViewCheckBoxStyle"
android:button="@drawable/gallery_checkbox_selector"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:paddingTop="4dp"
android:visibility="gone"
android:contentDescription="@string/gallery_checkbox_content_description" />
</com.android.messaging.ui.mediapicker.GalleryGridItemView>
+33 -26
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 The Android Open Source Project
Copyright (C) 2024 The LineageOS Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,30 +16,36 @@
limitations under the License.
-->
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<FrameLayout
android:id="@+id/mediapicker_enabled"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.android.messaging.ui.mediapicker.GalleryGridView
android:id="@+id/gallery_grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="6dp"
android:columnWidth="@dimen/gallery_image_cell_size"
android:numColumns="auto_fit"
android:verticalSpacing="6dp"
android:horizontalSpacing="6dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:clipToPadding="false"
android:background="@android:color/white" />
<!-- This view will hide all other views if the required permission is not granted -->
<TextView
android:id="@+id/missing_permission_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/enable_permission_procedure"
android:contentDescription="@string/enable_permission_procedure_description"
android:background="@android:color/white"
android:gravity="center"
android:visibility="gone" />
</FrameLayout>
android:layout_height="match_parent" >
<TextView
style="@style/ContactPickerHintText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center"
android:layout_marginTop="16dp"
android:text="@string/mediapicker_galleryChooserDescription"
android:importantForAccessibility="no" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="center"
android:src="@drawable/ic_image_light"
android:scaleX="1.33"
android:scaleY="1.33"
app:tint="@color/primary_color"
android:importantForAccessibility="no"
android:contentDescription="@null" />
</FrameLayout>
</FrameLayout>
-35
View File
@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 The Android Open Source Project
Copyright (C) 2024 The LineageOS Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:appcompat="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item
android:id="@+id/action_multiselect"
android:icon="@drawable/ic_checkbox_outline_light"
android:orderInCategory="100"
android:title="@string/action_multiselect"
appcompat:showAsAction="always"/>
<item
android:id="@+id/action_confirm_multiselect"
android:icon="@drawable/ic_checkmark_light"
android:orderInCategory="101"
android:title="@string/action_confirm_multiselect"
appcompat:showAsAction="always"/>
</menu>