summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaesu Lee <taesu82.lee@samsung.com>2020-03-04 09:33:19 +0900
committerLuca Stefani <luca.stefani.ge1@gmail.com>2020-03-16 16:29:45 +0100
commit5ca1c4339d38ea0091bd627db6b45cc1dec3b17c (patch)
treef17c73f4a6ee8ce260973ce48e398348d775bb47
parent4af66f74a2ff649844e01c8f7623955e744fa8bc (diff)
downloadpackages_apps_Messaging-5ca1c4339d38ea0091bd627db6b45cc1dec3b17c.tar.gz
packages_apps_Messaging-5ca1c4339d38ea0091bd627db6b45cc1dec3b17c.tar.bz2
packages_apps_Messaging-5ca1c4339d38ea0091bd627db6b45cc1dec3b17c.zip
New interface to pick a contact as attachment
New ContactMediaChooser allows the user to pick a contact from contacts apps as attachment. Test: Manual Change-Id: Idb00cd8a3164a3cac859947affd5cbcc7e41b8c2 Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
-rw-r--r--res/layout/mediapicker_contact_chooser.xml61
-rw-r--r--res/values/colors.xml2
-rw-r--r--res/values/dimens.xml3
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/values/styles.xml5
-rw-r--r--src/com/android/messaging/ui/UIIntents.java12
-rw-r--r--src/com/android/messaging/ui/UIIntentsImpl.java13
-rw-r--r--src/com/android/messaging/ui/mediapicker/ContactMediaChooser.java144
-rw-r--r--src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java36
-rw-r--r--src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java29
-rw-r--r--src/com/android/messaging/ui/mediapicker/MediaChooser.java4
-rw-r--r--src/com/android/messaging/ui/mediapicker/MediaPicker.java25
-rw-r--r--tests/src/com/android/messaging/ui/mediapicker/MediaPickerTest.java4
13 files changed, 296 insertions, 46 deletions
diff --git a/res/layout/mediapicker_contact_chooser.xml b/res/layout/mediapicker_contact_chooser.xml
new file mode 100644
index 0000000..dcace4f
--- /dev/null
+++ b/res/layout/mediapicker_contact_chooser.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2020 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.
+-->
+<FrameLayout
+ 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"
+ android:importantForAccessibility="no" >
+
+ <FrameLayout
+ android:id="@+id/mediapicker_enabled"
+ android:layout_width="match_parent"
+ 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/contact_picker_hint_text"
+ 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_person_light_large"
+ android:tint="@color/primary_color"
+ android:importantForAccessibility="no"
+ android:contentDescription="@null" />
+ </FrameLayout>
+
+ <!-- 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>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 480d03b..2ccf643 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -111,6 +111,8 @@
<color name="audio_attachment_timer_text_color">#323232</color>
<color name="audio_progress_bar_color">@color/lineage_accent</color>
+ <color name="contact_picker_hint_text_color">#40000000</color>
+
<color name="notification_sender_text">#9A9A9A</color>
<color name="notification_secondary_text">#FFFFFF</color>
<color name="notification_tertiary_text">#FFFFFF</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ea4c70a..734afe8 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -99,6 +99,9 @@
<dimen name="audio_picker_text_size">16sp</dimen>
<dimen name="audio_attachment_text_size">14sp</dimen>
<dimen name="audio_progress_bar_height">6dp</dimen>
+
+ <dimen name="contact_picker_text_size">16sp</dimen>
+
<!-- Videos in the message list view should at least be this big in the smallest dimension -->
<dimen name="video_message_min_size">320dp</dimen>
<dimen name="attachment_rounded_corner_radius">3dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index cb22e0f..8ed7c6c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -53,6 +53,7 @@
<string name="mediapicker_cameraChooserDescription">Capture pictures or video</string>
<string name="mediapicker_galleryChooserDescription">Choose images from this device</string>
<string name="mediapicker_audioChooserDescription">Record audio</string>
+ <string name="mediapicker_contactChooserDescription">Choose a contact from this device</string>
<string name="mediapicker_gallery_title">Choose media</string>
<string name="mediapicker_gallery_item_selected_content_description">The media is selected.</string>
<string name="mediapicker_gallery_item_unselected_content_description">The media is unselected.</string>
@@ -61,6 +62,9 @@
<string name="mediapicker_gallery_image_item_description">image <xliff:g id="date">%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</xliff:g></string>
<string name="mediapicker_gallery_image_item_description_no_date">image</string>
<string name="mediapicker_audio_title">Record audio</string>
+ <string name="mediapicker_contact_title">Choose a contact</string>
+ <!-- Hint text on the contact picker -->
+ <string name="contact_picker_hint_text">Click to open contacts list on this device</string>
<string name="action_share">Share</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b889852..9bd338f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -219,6 +219,11 @@
<item name="android:paddingLeft">16dp</item>
</style>
+ <style name="ContactPickerHintText">
+ <item name="android:textSize">@dimen/contact_picker_text_size</item>
+ <item name="android:textColor">@color/contact_picker_hint_text_color</item>
+ </style>
+
<style name="VcardAttachmentSingleStyle">
<item name="android:paddingRight">@dimen/message_text_left_right_padding</item>
<item name="android:paddingLeft">@dimen/message_text_left_right_padding</item>
diff --git a/src/com/android/messaging/ui/UIIntents.java b/src/com/android/messaging/ui/UIIntents.java
index 495732f..10fb391 100644
--- a/src/com/android/messaging/ui/UIIntents.java
+++ b/src/com/android/messaging/ui/UIIntents.java
@@ -47,6 +47,9 @@ public abstract class UIIntents {
// The request code for picking a media from the Document picker.
public static final int REQUEST_PICK_MEDIA_FROM_DOCUMENT_PICKER = 1400;
+ // The request code for picking a contact card from existing Contacts apps.
+ public static final int REQUEST_PICK_CONTACT_CARD = 1500;
+
// Indicates what type of notification this applies to (See BugleNotifications:
// UPDATE_NONE, UPDATE_MESSAGES, UPDATE_ERRORS, UPDATE_ALL)
public static final String UI_INTENT_EXTRA_NOTIFICATIONS_UPDATE = "notifications_update";
@@ -169,13 +172,20 @@ public abstract class UIIntents {
public abstract void launchAddContactActivity(final Context context, final String destination);
/**
- * Launch an activity to show the document picker to pick an image/video.
+ * Launch an activity to show the document picker to pick an image/video/audio.
*
* @param fragment the requesting fragment
*/
public abstract void launchDocumentImagePicker(final Fragment fragment);
/**
+ * Launch an activity to show the contacts list to pick one.
+ *
+ * @param fragment the requesting fragment
+ */
+ public abstract void launchContactCardPicker(final Fragment fragment);
+
+ /**
* Launch an activity to show people & options for a given conversation.
*/
public abstract void launchPeopleAndOptionsActivity(final Activity context,
diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java
index cc20065..9281899 100644
--- a/src/com/android/messaging/ui/UIIntentsImpl.java
+++ b/src/com/android/messaging/ui/UIIntentsImpl.java
@@ -243,6 +243,19 @@ public class UIIntentsImpl extends UIIntents {
}
@Override
+ public void launchContactCardPicker(final Fragment fragment) {
+ final Intent intent = new Intent(Intent.ACTION_PICK);
+ intent.setType(Contacts.CONTENT_TYPE);
+
+ try {
+ fragment.startActivityForResult(intent, REQUEST_PICK_CONTACT_CARD);
+ } catch (final ActivityNotFoundException ex) {
+ LogUtil.w(LogUtil.BUGLE_TAG, "Couldn't find activity:", ex);
+ UiUtils.showToastAtBottom(R.string.activity_not_found_message);
+ }
+ }
+
+ @Override
public void launchPeopleAndOptionsActivity(final Activity activity,
final String conversationId) {
final Intent intent = new Intent(activity, PeopleAndOptionsActivity.class);
diff --git a/src/com/android/messaging/ui/mediapicker/ContactMediaChooser.java b/src/com/android/messaging/ui/mediapicker/ContactMediaChooser.java
new file mode 100644
index 0000000..a81ed08
--- /dev/null
+++ b/src/com/android/messaging/ui/mediapicker/ContactMediaChooser.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+
+package com.android.messaging.ui.mediapicker;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.messaging.R;
+import com.android.messaging.datamodel.data.PendingAttachmentData;
+import com.android.messaging.ui.UIIntents;
+import com.android.messaging.util.ContactUtil;
+import com.android.messaging.util.ContentType;
+import com.android.messaging.util.SafeAsyncTask;
+
+/**
+ * Chooser which allows the user to select an existing contact from contacts apps on this device.
+ * Note that this chooser requires the Manifest.permission.READ_CONTACTS which is one of the miminum
+ * set of permissions for this app. Thus no case to request READ_CONTACTS permission on it actually.
+ */
+class ContactMediaChooser extends MediaChooser {
+ private View mEnabledView;
+ private View mMissingPermissionView;
+
+ ContactMediaChooser(final MediaPicker mediaPicker) {
+ super(mediaPicker);
+ }
+
+ @Override
+ public int getSupportedMediaTypes() {
+ return MediaPicker.MEDIA_TYPE_VCARD;
+ }
+
+ @Override
+ public int getIconResource() {
+ return R.drawable.ic_person_light;
+ }
+
+ @Override
+ public int getIconDescriptionResource() {
+ return R.string.mediapicker_contactChooserDescription;
+ }
+
+ @Override
+ int getActionBarTitleResId() {
+ return R.string.mediapicker_contact_title;
+ }
+
+ @Override
+ protected View createView(final ViewGroup container) {
+ final LayoutInflater inflater = getLayoutInflater();
+ final View view =
+ inflater.inflate(
+ R.layout.mediapicker_contact_chooser,
+ container /* root */,
+ false /* attachToRoot */);
+ mEnabledView = view.findViewById(R.id.mediapicker_enabled);
+ mMissingPermissionView = view.findViewById(R.id.missing_permission_view);
+ mEnabledView.setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(final View v) {
+ // Launch an external picker to pick a contact as attachment.
+ UIIntents.get().launchContactCardPicker(mMediaPicker);
+ }
+ });
+ return view;
+ }
+
+ @Override
+ protected void setSelected(final boolean selected) {
+ super.setSelected(selected);
+ if (selected && !ContactUtil.hasReadContactsPermission()) {
+ mMediaPicker.requestPermissions(
+ new String[] {Manifest.permission.READ_CONTACTS},
+ MediaPicker.READ_CONTACT_PERMISSION_REQUEST_CODE);
+ }
+ }
+
+ @Override
+ protected void onRequestPermissionsResult(
+ final int requestCode, final String permissions[], final int[] grantResults) {
+ if (requestCode == MediaPicker.READ_CONTACT_PERMISSION_REQUEST_CODE) {
+ final boolean permissionGranted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
+ mEnabledView.setVisibility(permissionGranted ? View.VISIBLE : View.GONE);
+ mMissingPermissionView.setVisibility(permissionGranted ? View.GONE : View.VISIBLE);
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == UIIntents.REQUEST_PICK_CONTACT_CARD
+ && resultCode == Activity.RESULT_OK) {
+ Uri contactUri = data.getData();
+ if (contactUri != null) {
+ String lookupKey = null;
+ try (final Cursor c = getContext().getContentResolver().query(
+ contactUri,
+ new String[] {Contacts.LOOKUP_KEY},
+ null,
+ null,
+ null)) {
+ if (c != null) {
+ c.moveToFirst();
+ lookupKey = c.getString(0);
+ }
+ }
+ final Uri vCardUri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey);
+ if (vCardUri != null) {
+ SafeAsyncTask.executeOnThreadPool(new Runnable() {
+ @Override
+ public void run() {
+ final PendingAttachmentData pendingItem =
+ PendingAttachmentData.createPendingAttachmentData(
+ ContentType.TEXT_VCARD.toLowerCase(), vCardUri);
+ mMediaPicker.dispatchPendingItemAdded(pendingItem);
+ }
+ });
+ }
+ }
+ }
+ }
+}
diff --git a/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java b/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java
index d6de128..c36467c 100644
--- a/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java
+++ b/src/com/android/messaging/ui/mediapicker/DocumentImagePicker.java
@@ -15,7 +15,6 @@
*/
package com.android.messaging.ui.mediapicker;
-import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
@@ -79,30 +78,27 @@ public class DocumentImagePicker {
* Must be called from the fragment/activity's onActivityResult().
*/
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
- if (requestCode == UIIntents.REQUEST_PICK_MEDIA_FROM_DOCUMENT_PICKER
- && resultCode == Activity.RESULT_OK) {
- // Sometimes called after media item has been picked from the document picker.
- String url = data.getStringExtra(EXTRA_PHOTO_URL);
+ // Sometimes called after media item has been picked from the document picker.
+ String url = data.getStringExtra(EXTRA_PHOTO_URL);
+ if (url == null) {
+ // we're using the builtin photo picker which supplies the return
+ // url as it's "data"
+ url = data.getDataString();
if (url == null) {
- // we're using the builtin photo picker which supplies the return
- // url as it's "data"
- url = data.getDataString();
- if (url == null) {
- final Bundle extras = data.getExtras();
- if (extras != null) {
- final Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
- if (uri != null) {
- url = uri.toString();
- }
+ final Bundle extras = data.getExtras();
+ if (extras != null) {
+ final Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
+ if (uri != null) {
+ url = uri.toString();
}
}
}
+ }
- // Guard against null uri cases for when the activity returns a null/invalid intent.
- if (url != null) {
- final Uri uri = Uri.parse(url);
- prepareDocumentForAttachment(uri);
- }
+ // Guard against null uri cases for when the activity returns a null/invalid intent.
+ if (url != null) {
+ final Uri uri = Uri.parse(url);
+ prepareDocumentForAttachment(uri);
}
}
diff --git a/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java b/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java
index c9b544d..6192c4f 100644
--- a/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java
+++ b/src/com/android/messaging/ui/mediapicker/GalleryMediaChooser.java
@@ -17,6 +17,8 @@
package com.android.messaging.ui.mediapicker;
import android.Manifest;
+import android.app.Activity;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.MatrixCursor;
@@ -35,6 +37,9 @@ import com.android.messaging.datamodel.data.GalleryGridItemData;
import com.android.messaging.datamodel.data.MediaPickerData;
import com.android.messaging.datamodel.data.MessagePartData;
import com.android.messaging.datamodel.data.MediaPickerData.MediaPickerDataListener;
+import com.android.messaging.datamodel.data.PendingAttachmentData;
+import com.android.messaging.ui.UIIntents;
+import com.android.messaging.ui.mediapicker.DocumentImagePicker.SelectionListener;
import com.android.messaging.util.Assert;
import com.android.messaging.util.OsUtil;
@@ -47,9 +52,21 @@ class GalleryMediaChooser extends MediaChooser implements
private GalleryGridView mGalleryGridView;
private View mMissingPermissionView;
+ /** Handles picking a media from the document picker. */
+ private DocumentImagePicker mDocumentImagePicker;
+
GalleryMediaChooser(final MediaPicker mediaPicker) {
super(mediaPicker);
mAdapter = new GalleryGridAdapter(Factory.get().getApplicationContext(), null);
+ mDocumentImagePicker = new DocumentImagePicker(mMediaPicker,
+ new SelectionListener() {
+ @Override
+ public void onDocumentSelected(final PendingAttachmentData data) {
+ if (mBindingRef.isBound()) {
+ mMediaPicker.dispatchPendingItemAdded(data);
+ }
+ }
+ });
}
@Override
@@ -148,7 +165,8 @@ class GalleryMediaChooser extends MediaChooser implements
@Override
public void onDocumentPickerItemClicked() {
- mMediaPicker.launchDocumentPicker();
+ // Launch an external picker to pick item from document picker as attachment.
+ mDocumentImagePicker.launchPicker();
}
@Override
@@ -230,4 +248,13 @@ class GalleryMediaChooser extends MediaChooser implements
mGalleryGridView.setVisibility(granted ? View.VISIBLE : View.GONE);
mMissingPermissionView.setVisibility(granted ? View.GONE : View.VISIBLE);
}
+
+ @Override
+ protected void onActivityResult(
+ final int requestCode, final int resultCode, final Intent data) {
+ if (requestCode == UIIntents.REQUEST_PICK_MEDIA_FROM_DOCUMENT_PICKER
+ && resultCode == Activity.RESULT_OK) {
+ mDocumentImagePicker.onActivityResult(requestCode, resultCode, data);
+ }
+ }
}
diff --git a/src/com/android/messaging/ui/mediapicker/MediaChooser.java b/src/com/android/messaging/ui/mediapicker/MediaChooser.java
index ef4067c..0549e5b 100644
--- a/src/com/android/messaging/ui/mediapicker/MediaChooser.java
+++ b/src/com/android/messaging/ui/mediapicker/MediaChooser.java
@@ -18,6 +18,7 @@ package com.android.messaging.ui.mediapicker;
import android.app.FragmentManager;
import android.content.Context;
+import android.content.Intent;
import androidx.appcompat.app.ActionBar;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -203,6 +204,9 @@ abstract class MediaChooser extends BasePagerViewHolder
public void stopTouchHandling() {
}
+ protected void onActivityResult(
+ final int requestCode, final int resultCode, final Intent data) {}
+
@Override
public int getConversationSelfSubId() {
return mMediaPicker.getConversationSelfSubId();
diff --git a/src/com/android/messaging/ui/mediapicker/MediaPicker.java b/src/com/android/messaging/ui/mediapicker/MediaPicker.java
index b8fce8f..c7faa33 100644
--- a/src/com/android/messaging/ui/mediapicker/MediaPicker.java
+++ b/src/com/android/messaging/ui/mediapicker/MediaPicker.java
@@ -16,7 +16,6 @@
package com.android.messaging.ui.mediapicker;
-
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
@@ -48,7 +47,6 @@ import com.android.messaging.datamodel.data.PendingAttachmentData;
import com.android.messaging.datamodel.data.DraftMessageData.DraftMessageSubscriptionDataProvider;
import com.android.messaging.ui.BugleActionBarActivity;
import com.android.messaging.ui.FixedViewPagerAdapter;
-import com.android.messaging.ui.mediapicker.DocumentImagePicker.SelectionListener;
import com.android.messaging.util.AccessibilityUtil;
import com.android.messaging.util.Assert;
import com.android.messaging.util.UiUtils;
@@ -159,9 +157,6 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
@VisibleForTesting
final Binding<MediaPickerData> mBinding = BindingBase.createBinding(this);
- /** Handles picking a media from the document picker. */
- private DocumentImagePicker mDocumentImagePicker;
-
/** Provides subscription-related data to access per-subscription configurations. */
private DraftMessageSubscriptionDataProvider mSubscriptionDataProvider;
@@ -179,6 +174,7 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
new CameraMediaChooser(this),
new GalleryMediaChooser(this),
new AudioMediaChooser(this),
+ new ContactMediaChooser(this),
};
mOpen = false;
@@ -203,15 +199,6 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding.getData().init(getLoaderManager());
- mDocumentImagePicker = new DocumentImagePicker(this,
- new SelectionListener() {
- @Override
- public void onDocumentSelected(final PendingAttachmentData data) {
- if (mBinding.isBound()) {
- dispatchPendingItemAdded(data);
- }
- }
- });
}
@Override
@@ -295,7 +282,7 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
@Override
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- mDocumentImagePicker.onActivityResult(requestCode, resultCode, data);
+ mSelectedChooser.onActivityResult(requestCode, resultCode, data);
}
@Override
@@ -710,13 +697,6 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
mPagerAdapter.resetState();
}
- /**
- * Launch an external picker to pick item from document picker as attachment.
- */
- public void launchDocumentPicker() {
- mDocumentImagePicker.launchPicker();
- }
-
public ImmutableBindingRef<MediaPickerData> getMediaPickerDataBinding() {
return BindingBase.createBindingReference(mBinding);
}
@@ -725,6 +705,7 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat
protected static final int LOCATION_PERMISSION_REQUEST_CODE = 2;
protected static final int RECORD_AUDIO_PERMISSION_REQUEST_CODE = 3;
protected static final int GALLERY_PERMISSION_REQUEST_CODE = 4;
+ protected static final int READ_CONTACT_PERMISSION_REQUEST_CODE = 5;
@Override
public void onRequestPermissionsResult(
diff --git a/tests/src/com/android/messaging/ui/mediapicker/MediaPickerTest.java b/tests/src/com/android/messaging/ui/mediapicker/MediaPickerTest.java
index eaf9338..4e7c2d2 100644
--- a/tests/src/com/android/messaging/ui/mediapicker/MediaPickerTest.java
+++ b/tests/src/com/android/messaging/ui/mediapicker/MediaPickerTest.java
@@ -103,7 +103,7 @@ public class MediaPickerTest extends FragmentTestCase<MediaPicker> {
final View view = mediaPicker.getView();
assertNotNull(view);
final ViewGroup tabStrip = (ViewGroup) view.findViewById(R.id.mediapicker_tabstrip);
- assertEquals(tabStrip.getChildCount(), 3);
+ assertEquals(tabStrip.getChildCount(), 4);
for (int i = 0; i < tabStrip.getChildCount(); i++) {
final ImageButton tabButton = (ImageButton) tabStrip.getChildAt(i);
assertEquals(View.VISIBLE, tabButton.getVisibility());
@@ -120,7 +120,7 @@ public class MediaPickerTest extends FragmentTestCase<MediaPicker> {
final View view = mediaPicker.getView();
assertNotNull(view);
final ViewGroup tabStrip = (ViewGroup) view.findViewById(R.id.mediapicker_tabstrip);
- assertEquals(tabStrip.getChildCount(), 3);
+ assertEquals(tabStrip.getChildCount(), 4);
for (int i = 0; i < tabStrip.getChildCount(); i++) {
final ImageButton tabButton = (ImageButton) tabStrip.getChildAt(i);
assertEquals(i == 0, tabButton.isSelected());