GalleryMediaChooser supports video types and more image types also. And video thumbnails are overlaid with the play button image to distinguish between images and videos. Note: 1. EXTRA_ALLOW_MULTIPLE is not specified for ACTION_GET_CONTENT. 2. Files, methods and variables' name are still including "image". 3. Content descriptions are not updated. Test: Manual Change-Id: I961928f150e4ae8ee80a1fba2f20c37fb5426669 Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
380 lines
14 KiB
Java
380 lines
14 KiB
Java
/*
|
|
* 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.
|
|
*/
|
|
package com.android.messaging.ui;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Fragment;
|
|
import android.app.PendingIntent;
|
|
import android.content.ContentValues;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.graphics.Point;
|
|
import android.graphics.Rect;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
|
|
import com.android.messaging.Factory;
|
|
import com.android.messaging.datamodel.data.MessageData;
|
|
import com.android.messaging.util.ConversationIdSet;
|
|
|
|
/**
|
|
* A central repository of Intents used to start activities.
|
|
*/
|
|
public abstract class UIIntents {
|
|
public static UIIntents get() {
|
|
return Factory.get().getUIIntents();
|
|
}
|
|
|
|
// Intent extras
|
|
public static final String UI_INTENT_EXTRA_CONVERSATION_ID = "conversation_id";
|
|
|
|
// Sending draft data (from share intent / message forwarding) to the ConversationActivity.
|
|
public static final String UI_INTENT_EXTRA_DRAFT_DATA = "draft_data";
|
|
|
|
// The request code for picking a media from the Document picker.
|
|
public static final int REQUEST_PICK_MEDIA_FROM_DOCUMENT_PICKER = 1400;
|
|
|
|
// 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";
|
|
|
|
// Pass a set of conversation id's.
|
|
public static final String UI_INTENT_EXTRA_CONVERSATION_ID_SET = "conversation_id_set";
|
|
|
|
// Sending class zero message to its activity
|
|
public static final String UI_INTENT_EXTRA_MESSAGE_VALUES = "message_values";
|
|
|
|
// For the widget to go to the ConversationList from the Conversation.
|
|
public static final String UI_INTENT_EXTRA_GOTO_CONVERSATION_LIST = "goto_conv_list";
|
|
|
|
// Indicates whether a conversation is launched with custom transition.
|
|
public static final String UI_INTENT_EXTRA_WITH_CUSTOM_TRANSITION = "with_custom_transition";
|
|
|
|
public static final String ACTION_RESET_NOTIFICATIONS =
|
|
"com.android.messaging.reset_notifications";
|
|
|
|
// Sending VCard uri to VCard detail activity
|
|
public static final String UI_INTENT_EXTRA_VCARD_URI = "vcard_uri";
|
|
|
|
public static final String CMAS_COMPONENT = "com.android.cellbroadcastreceiver";
|
|
|
|
// Intent action for local broadcast receiver for conversation self id change.
|
|
public static final String CONVERSATION_SELF_ID_CHANGE_BROADCAST_ACTION =
|
|
"conversation_self_id_change";
|
|
|
|
// Conversation self id
|
|
public static final String UI_INTENT_EXTRA_CONVERSATION_SELF_ID = "conversation_self_id";
|
|
|
|
// For opening an APN editor on a particular row in the apn database.
|
|
public static final String UI_INTENT_EXTRA_APN_ROW_ID = "apn_row_id";
|
|
|
|
// Subscription id
|
|
public static final String UI_INTENT_EXTRA_SUB_ID = "sub_id";
|
|
|
|
// Per-Subscription setting activity title
|
|
public static final String UI_INTENT_EXTRA_PER_SUBSCRIPTION_SETTING_TITLE =
|
|
"per_sub_setting_title";
|
|
|
|
// Is application settings launched as the top level settings activity?
|
|
public static final String UI_INTENT_EXTRA_TOP_LEVEL_SETTINGS = "top_level_settings";
|
|
|
|
// Sending attachment uri from widget
|
|
public static final String UI_INTENT_EXTRA_ATTACHMENT_URI = "attachment_uri";
|
|
|
|
// Sending attachment content type from widget
|
|
public static final String UI_INTENT_EXTRA_ATTACHMENT_TYPE = "attachment_type";
|
|
|
|
public static final String ACTION_WIDGET_CONVERSATION =
|
|
"com.android.messaging.widget_conversation:";
|
|
|
|
public static final String UI_INTENT_EXTRA_REQUIRES_MMS = "requires_mms";
|
|
|
|
public static final String UI_INTENT_EXTRA_SELF_ID = "self_id";
|
|
|
|
// Message position to scroll to.
|
|
public static final String UI_INTENT_EXTRA_MESSAGE_POSITION = "message_position";
|
|
|
|
/**
|
|
* Launch the permission check activity
|
|
*/
|
|
public abstract void launchPermissionCheckActivity(final Context context);
|
|
|
|
public abstract void launchConversationListActivity(final Context context);
|
|
|
|
/**
|
|
* Launch an activity to show a conversation. This method by default provides no additional
|
|
* activity options.
|
|
*/
|
|
public void launchConversationActivity(final Context context,
|
|
final String conversationId, final MessageData draft) {
|
|
launchConversationActivity(context, conversationId, draft, null,
|
|
false /* withCustomTransition */);
|
|
}
|
|
|
|
/**
|
|
* Launch an activity to show a conversation.
|
|
*/
|
|
public abstract void launchConversationActivity(final Context context,
|
|
final String conversationId, final MessageData draft, final Bundle activityOptions,
|
|
final boolean withCustomTransition);
|
|
|
|
|
|
/**
|
|
* Launch an activity to show conversation with conversation list in back stack.
|
|
*/
|
|
public abstract void launchConversationActivityWithParentStack(Context context,
|
|
String conversationId, String smsBody);
|
|
|
|
/**
|
|
* Launch an activity to show a conversation as a new task.
|
|
*/
|
|
public abstract void launchConversationActivityNewTask(final Context context,
|
|
final String conversationId);
|
|
|
|
/**
|
|
* Launch an activity to start a new conversation
|
|
*/
|
|
public abstract void launchCreateNewConversationActivity(final Context context,
|
|
final MessageData draft);
|
|
|
|
/**
|
|
* Launch debug activity to set MMS config options.
|
|
*/
|
|
public abstract void launchDebugMmsConfigActivity(final Context context);
|
|
|
|
/**
|
|
* Launch an activity to change settings.
|
|
*/
|
|
public abstract void launchSettingsActivity(final Context context);
|
|
|
|
/**
|
|
* Launch an activity to add a contact with a given destination.
|
|
*/
|
|
public abstract void launchAddContactActivity(final Context context, final String destination);
|
|
|
|
/**
|
|
* Launch an activity to show the document picker to pick an image/video.
|
|
*
|
|
* @param fragment the requesting fragment
|
|
*/
|
|
public abstract void launchDocumentImagePicker(final Fragment fragment);
|
|
|
|
/**
|
|
* Launch an activity to show people & options for a given conversation.
|
|
*/
|
|
public abstract void launchPeopleAndOptionsActivity(final Activity context,
|
|
final String conversationId);
|
|
|
|
/**
|
|
* Launch an external activity to handle a phone call
|
|
* @param phoneNumber the phone number to call
|
|
* @param clickPosition is the location tapped to start this launch for transition use
|
|
*/
|
|
public abstract void launchPhoneCallActivity(final Context context, final String phoneNumber,
|
|
final Point clickPosition);
|
|
|
|
/**
|
|
* Launch an activity to show archived conversations.
|
|
*/
|
|
public abstract void launchArchivedConversationsActivity(final Context context);
|
|
|
|
/**
|
|
* Launch an activity to show blocked participants.
|
|
*/
|
|
public abstract void launchBlockedParticipantsActivity(final Context context);
|
|
|
|
/**
|
|
* Launch an activity to show a class zero message
|
|
*/
|
|
public abstract void launchClassZeroActivity(Context context, ContentValues messageValues);
|
|
|
|
/**
|
|
* Launch an activity to let the user forward a message
|
|
*/
|
|
public abstract void launchForwardMessageActivity(Context context, MessageData message);
|
|
|
|
/**
|
|
* Launch an activity to show details for a VCard
|
|
*/
|
|
public abstract void launchVCardDetailActivity(Context context, Uri vcardUri);
|
|
|
|
/**
|
|
* Launch an external activity that handles the intent to add VCard to contacts
|
|
*/
|
|
public abstract void launchSaveVCardToContactsActivity(Context context, Uri vcardUri);
|
|
|
|
/**
|
|
* Launch an activity to let the user select & unselect the list of attachments to send.
|
|
*/
|
|
public abstract void launchAttachmentChooserActivity(final Activity activity,
|
|
final String conversationId, final int requestCode);
|
|
|
|
/**
|
|
* Launch full screen video viewer.
|
|
*/
|
|
public abstract void launchFullScreenVideoViewer(Context context, Uri videoUri);
|
|
|
|
/**
|
|
* Launch full screen photo viewer.
|
|
*/
|
|
public abstract void launchFullScreenPhotoViewer(Activity activity, Uri initialPhoto,
|
|
Rect initialPhotoBounds, Uri photosUri);
|
|
|
|
/**
|
|
* Launch an activity to show general app settings
|
|
* @param topLevel indicates whether the app settings is launched as the top-level settings
|
|
* activity (instead of SettingsActivity which shows a collapsed view of the app
|
|
* settings + one settings item per subscription). This is true when there's only one
|
|
* active SIM in the system so we can show this activity directly.
|
|
*/
|
|
public abstract void launchApplicationSettingsActivity(Context context, boolean topLevel);
|
|
|
|
/**
|
|
* Launch an activity to show per-subscription settings
|
|
*/
|
|
public abstract void launchPerSubscriptionSettingsActivity(Context context, int subId,
|
|
String settingTitle);
|
|
|
|
/**
|
|
* Get a ACTION_VIEW intent
|
|
* @param url display the data in the url to users
|
|
*/
|
|
public abstract Intent getViewUrlIntent(final String url);
|
|
|
|
/**
|
|
* Get an intent to launch the ringtone picker
|
|
* @param title the title to show in the ringtone picker
|
|
* @param existingUri the currently set uri
|
|
* @param defaultUri the default uri if none is currently set
|
|
* @param toneType type of ringtone to pick, maybe any of RingtoneManager.TYPE_*
|
|
*/
|
|
public abstract Intent getRingtonePickerIntent(final String title, final Uri existingUri,
|
|
final Uri defaultUri, final int toneType);
|
|
|
|
/**
|
|
* Get an intent to launch the wireless alert viewer.
|
|
*/
|
|
public abstract Intent getWirelessAlertsIntent();
|
|
|
|
/**
|
|
* Get an intent to launch the dialog for changing the default SMS App.
|
|
*/
|
|
public abstract Intent getChangeDefaultSmsAppIntent(final Activity activity);
|
|
|
|
/**
|
|
* Broadcast conversation self id change so it may be reflected in the message compose UI.
|
|
*/
|
|
public abstract void broadcastConversationSelfIdChange(final Context context,
|
|
final String conversationId, final String conversationSelfId);
|
|
|
|
/**
|
|
* Get a PendingIntent for starting conversation list from notifications.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForConversationListActivity(
|
|
final Context context);
|
|
|
|
/**
|
|
* Get a PendingIntent for starting conversation list from widget.
|
|
*/
|
|
public abstract PendingIntent getWidgetPendingIntentForConversationListActivity(
|
|
final Context context);
|
|
|
|
/**
|
|
* Get a PendingIntent for showing a conversation from notifications.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForConversationActivity(final Context context,
|
|
final String conversationId, final MessageData draft);
|
|
|
|
/**
|
|
* Get an Intent for showing a conversation from the widget.
|
|
*/
|
|
public abstract Intent getIntentForConversationActivity(final Context context,
|
|
final String conversationId, final MessageData draft);
|
|
|
|
/**
|
|
* Get a PendingIntent for sending a message to a conversation, without opening the Bugle UI.
|
|
*
|
|
* <p>This is intended to be used by the Android Wear companion app when sending transcribed
|
|
* voice replies.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForSendingMessageToConversation(
|
|
final Context context, final String conversationId, final String selfId,
|
|
final boolean requiresMms, final int requestCode);
|
|
|
|
/**
|
|
* Get a PendingIntent for clearing notifications.
|
|
*
|
|
* <p>This is intended to be used by notifications.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForClearingNotifications(final Context context,
|
|
final int updateTargets, final ConversationIdSet conversationIdSet,
|
|
final int requestCode);
|
|
|
|
/**
|
|
* Get a PendingIntent for showing low storage notifications.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForLowStorageNotifications(final Context context);
|
|
|
|
/**
|
|
* Get a PendingIntent for showing a new message to a secondary user.
|
|
*/
|
|
public abstract PendingIntent getPendingIntentForSecondaryUserNewMessageNotification(
|
|
final Context context);
|
|
|
|
/**
|
|
* Get an intent for showing the APN editor.
|
|
*/
|
|
public abstract Intent getApnEditorIntent(final Context context, final String rowId, int subId);
|
|
|
|
/**
|
|
* Get an intent for showing the APN settings.
|
|
*/
|
|
public abstract Intent getApnSettingsIntent(final Context context, final int subId);
|
|
|
|
/**
|
|
* Get an intent for showing advanced settings.
|
|
*/
|
|
public abstract Intent getAdvancedSettingsIntent(final Context context);
|
|
|
|
/**
|
|
* Get an intent for the LaunchConversationActivity.
|
|
*/
|
|
public abstract Intent getLaunchConversationActivityIntent(final Context context);
|
|
|
|
/**
|
|
* Tell MediaScanner to re-scan the specified volume.
|
|
*/
|
|
public abstract void kickMediaScanner(final Context context, final String volume);
|
|
|
|
/**
|
|
* Launch to browser for a url.
|
|
*/
|
|
public abstract void launchBrowserForUrl(final Context context, final String url);
|
|
|
|
/**
|
|
* Get a PendingIntent for the widget conversation template.
|
|
*/
|
|
public abstract PendingIntent getWidgetPendingIntentForConversationActivity(
|
|
final Context context, final String conversationId, final int requestCode);
|
|
|
|
/**
|
|
* Get a PendingIntent for the conversation widget configuration activity template.
|
|
*/
|
|
public abstract PendingIntent getWidgetPendingIntentForConfigurationActivity(
|
|
final Context context, final int appWidgetId);
|
|
|
|
}
|