diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f62ae49e..bf85bc468 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## UNRELEASED
+* Allow sending and opening attachments of any type
* Send contacts and email addresses
* Clickable email addresses
* Update Polish translation
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/AndroidUtilities.java b/MessengerProj/src/main/java/com/b44t/messenger/AndroidUtilities.java
index cffef509b..764a1d816 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/AndroidUtilities.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/AndroidUtilities.java
@@ -988,21 +988,32 @@ public class AndroidUtilities {
}
*/
+ public static String getMimetypeForView(MessageObject message)
+ {
+ String mimeType = "application/octet-stream";
+ String fileName = message.messageOwner.media.document.file_name;
+ try {
+ MimeTypeMap mimeMap = MimeTypeMap.getSingleton();
+ int idx = fileName.lastIndexOf('.');
+ if (idx != -1) {
+ String ext = fileName.substring(idx + 1);
+ mimeType = mimeMap.getMimeTypeFromExtension(ext.toLowerCase());
+ }
+ if (mimeType == null) {
+ mimeType = message.messageOwner.media.document.mime_type;
+ }
+ }
+ catch(Exception e) {
+ }
+ return mimeType;
+ }
+
public static void openForView(MessageObject message, Activity activity) throws Exception
{
String fileName = message.messageOwner.media.document.file_name;
Uri toOpen = Uri.parse("content://" + BuildConfig.APPLICATION_ID + ".attachments/" + fileName);
- String mimeType = null;
- MimeTypeMap mimeMap = MimeTypeMap.getSingleton();
- int idx = fileName.lastIndexOf('.');
- if (idx != -1) {
- String ext = fileName.substring(idx + 1);
- mimeType = mimeMap.getMimeTypeFromExtension(ext.toLowerCase());
- }
- if (mimeType == null) {
- mimeType = message.messageOwner.media.document.mime_type;
- }
+ String mimeType = getMimetypeForView(message);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(toOpen, mimeType);
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java b/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java
index d1f5940a3..e3b33124d 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/MessageObject.java
@@ -727,10 +727,6 @@ public class MessageObject {
return messageOwner.media instanceof TLRPC.TL_messageMediaDocument && isGifDocument(messageOwner.media.document);
}
- public boolean isWebpageDocument() {
- return false;
- }
-
public boolean isNewGif() {
return messageOwner.media != null && isNewGifDocument(messageOwner.media.document);
}
diff --git a/MessengerProj/src/main/java/com/b44t/messenger/MrMsg.java b/MessengerProj/src/main/java/com/b44t/messenger/MrMsg.java
index 567273145..71b49ad3f 100644
--- a/MessengerProj/src/main/java/com/b44t/messenger/MrMsg.java
+++ b/MessengerProj/src/main/java/com/b44t/messenger/MrMsg.java
@@ -199,6 +199,7 @@ public class MrMsg {
ret.media = new TLRPC.TL_messageMediaDocument();
ret.media.caption = "";
ret.media.document = new TLRPC.TL_document();
+ ret.media.document.file_name = getFilename();
ret.media.document.mr_path = path;
if( type == MR_MSG_AUDIO || type == MR_MSG_VOICE ) {
TLRPC.TL_documentAttributeAudio attr = new TLRPC.TL_documentAttributeAudio();
diff --git a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java
index 462b76596..d5e412624 100644
--- a/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java
+++ b/MessengerProj/src/main/java/com/b44t/ui/ChatActivity.java
@@ -72,7 +72,6 @@ import com.b44t.messenger.browser.Browser;
import com.b44t.messenger.support.widget.LinearLayoutManager;
import com.b44t.messenger.support.widget.RecyclerView;
import com.b44t.messenger.ApplicationLoader;
-import com.b44t.messenger.FileLoader;
import com.b44t.messenger.ConnectionsManager;
import com.b44t.messenger.TLRPC;
import com.b44t.messenger.FileLog;
@@ -154,7 +153,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
private boolean openSearchKeyboard;
- private MessageObject forwaringMessage;
private boolean paused = true;
private boolean wasPaused = false;
private boolean readWhenResume = false;
@@ -231,7 +229,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
NotificationCenter.getInstance().addObserver(this, NotificationCenter.replaceMessagesObjects);
NotificationCenter.getInstance().addObserver(this, NotificationCenter.notificationsSettingsUpdated);
NotificationCenter.getInstance().addObserver(this, NotificationCenter.errSelfNotInGroup);
- //NotificationCenter.getInstance().addObserver(this, NotificationCenter.chatSearchResultsAvailable);
if (AndroidUtilities.isTablet()) {
NotificationCenter.getInstance().postNotificationName(NotificationCenter.openedChatChanged, dialog_id, false);
@@ -363,7 +360,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.replaceMessagesObjects);
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.notificationsSettingsUpdated);
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.errSelfNotInGroup);
- //NotificationCenter.getInstance().removeObserver(this, NotificationCenter.chatSearchResultsAvailable);
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.audioPlayStateChanged);
if (AndroidUtilities.isTablet()) {
@@ -1423,27 +1419,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
});
}
- /*
- private void clearChatData() {
- messages.clear();
- messagesByDays.clear();
- chatListView.setEmptyView(null);
- messagesDict.clear();
- maxMessageId = Integer.MAX_VALUE;
- minMessageId = Integer.MIN_VALUE;
- maxDate = Integer.MIN_VALUE;
- minDate = 0;
- endReached = false;
- forwardEndReached = true;
- first = true;
- firstLoading = true;
- loadingForward = false;
- startLoadFromMessageId = 0;
- last_message_id = 0;
- chatAdapter.notifyDataSetChanged();
- }
- */
-
private void moveScrollToLastMessage() {
if( m_msglist.length > 0 ) {
chatLayoutManager.scrollToPositionWithOffset(m_msglist.length - 1, -100000 - chatListView.getPaddingTop());
@@ -2463,7 +2438,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
return;
}
- forwaringMessage = null;
selectedMessagesIds.clear();
actionBar.hideActionMode();
actionBar.createActionMode();
@@ -2536,48 +2510,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
dialogsFragment.finishFragment(false);
}
}
-
- /*
- if (dialog_id != 0 && (forwaringMessage != null || !selectedMessagesIds.isEmpty() )) {
- if (forwaringMessage != null) {
- forwaringMessage = null;
- } else {
- selectedMessagesIds.clear();
- actionBar.hideActionMode();
- }
-
- if (did != dialog_id) {
- int lower_part = (int) did;
- if (lower_part != 0) {
- Bundle args = new Bundle();
- args.putBoolean("scrollToTopOnResume", scrollToTopOnResume);
- if (lower_part > 0) {
- args.putInt("user_id", lower_part);
- } else if (lower_part < 0) {
- args.putInt("chat_id", -lower_part);
- }
-
- ChatActivity chatActivity = new ChatActivity(args);
- if (presentFragment(chatActivity, true)) {
- if (!AndroidUtilities.isTablet()) {
- removeSelfFromStack();
- }
- } else {
- activity.finishFragment();
- }
- } else {
- activity.finishFragment();
- }
- } else {
- activity.finishFragment();
- moveScrollToLastMessage();
- if (AndroidUtilities.isTablet()) {
- actionBar.hideActionMode();
- }
- updateVisibleRows();
- }
- }
- */
}
@Override
@@ -2656,20 +2588,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
return messageObjects;
}
- private void alertUserOpenError(MessageObject message) {
- if (getParentActivity() == null) {
- return;
- }
- AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
- builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
- if (message.type == MessageObject.MO_TYPE3_VIDEO) {
- builder.setMessage(LocaleController.getString("NoPlayerInstalled", R.string.NoPlayerInstalled));
- } else {
- builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, message.getDocument().mime_type));
- }
- showDialog(builder.create());
- }
-
private void openSearchWithText(String text) {
avatarContainer.setVisibility(View.GONE);
headerItem.setVisibility(View.GONE);
@@ -2963,29 +2881,19 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
@Override
public void didPressedImage(ChatMessageCell cell) {
MessageObject message = cell.getMessageObject();
- if (Build.VERSION.SDK_INT >= 16 && message.isVideo() || message.type == MessageObject.MO_TYPE1_PHOTO || message.type == MessageObject.MO_TYPE0_TEXT && !message.isWebpageDocument() || message.isGif()) {
+ if( (Build.VERSION.SDK_INT >= 16 && message.isVideo()) || message.type == MessageObject.MO_TYPE1_PHOTO || message.isGif()) {
PhotoViewer.getInstance().setParentActivity(getParentActivity());
PhotoViewer.getInstance().openPhoto(message, message.type != MessageObject.MO_TYPE0_TEXT ? dialog_id : 0, 0, ChatActivity.this);
- } else if (message.type == MessageObject.MO_TYPE3_VIDEO) {
- try {
- File f = null;
- if (message.messageOwner.attachPath != null && message.messageOwner.attachPath.length() != 0) {
- f = new File(message.messageOwner.attachPath);
- }
- if (f == null || !f.exists()) {
- f = FileLoader.getPathToMessage(message.messageOwner);
- }
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.fromFile(f), "video/mp4");
- getParentActivity().startActivityForResult(intent, 500);
- } catch (Exception e) {
- alertUserOpenError(message);
- }
- } else if (message.type == MessageObject.MO_TYPE9_FILE || message.type == MessageObject.MO_TYPE0_TEXT) {
+ } else if (message.type == MessageObject.MO_TYPE9_FILE || message.type == MessageObject.MO_TYPE3_VIDEO ) {
try {
AndroidUtilities.openForView(message, getParentActivity());
} catch (Exception e) {
- alertUserOpenError(message);
+ if ( getParentActivity()!=null ) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
+ builder.setPositiveButton(ApplicationLoader.applicationContext.getString(R.string.OK), null);
+ builder.setMessage(LocaleController.formatString("NoHandleAppInstalled", R.string.NoHandleAppInstalled, AndroidUtilities.getMimetypeForView(message)));
+ showDialog(builder.create());
+ }
}
}
}
diff --git a/MessengerProj/src/main/res/values-de/strings.xml b/MessengerProj/src/main/res/values-de/strings.xml
index 323e70320..a67e417f4 100644
--- a/MessengerProj/src/main/res/values-de/strings.xml
+++ b/MessengerProj/src/main/res/values-de/strings.xml
@@ -277,8 +277,7 @@
Ich
Lädt …
- Du hast keinen Videoplayer. Bitte installiere einen um fortzufahren.
- Du hast keine Applikationen, die den Dateityp \'%1$s\' öffnen könnten. Bitte installiere eine entsprechende Anwendung um fortzufahren.
+ Um den Dateityp \"%1$s\" öffnen zu können, muss eine entsprechende App installiert werden.
Kontakt befindet sich schon in der Gruppe.
Ausgewählte Nachrichten an ]]>%1$s]]> weiterleiten?
Nachricht an ]]>%1$s]]> senden?
diff --git a/MessengerProj/src/main/res/values-es/strings.xml b/MessengerProj/src/main/res/values-es/strings.xml
index 186d40709..7dafe2650 100644
--- a/MessengerProj/src/main/res/values-es/strings.xml
+++ b/MessengerProj/src/main/res/values-es/strings.xml
@@ -274,7 +274,6 @@
Tú
Cargando…
- No tienes reproductor de vídeo. Por favor, instala uno para continuar.
No tienes aplicaciones que puedan manejar el tipo de archivo “%1$s”. Por favor, instala una para continuar.
¿Añadir a ]]>%1$s]]> al grupo?
Este usuario ya está en el grupo
diff --git a/MessengerProj/src/main/res/values-fr/strings.xml b/MessengerProj/src/main/res/values-fr/strings.xml
index 6f6fc4f4e..795b6f91c 100644
--- a/MessengerProj/src/main/res/values-fr/strings.xml
+++ b/MessengerProj/src/main/res/values-fr/strings.xml
@@ -272,7 +272,6 @@
Moi
Chargement…
- Vous n\'avez pas de lecteur vidéo, installez-en un pour continuer
Vous n\'avez pas d\'application qui peut gérer le type \'%1$s\', veuillez en installer un pour continuer
Ce contact est déjà dans ce groupe
Renvoyer les messages sélectionnés à ]]>%1$s]]> ?
diff --git a/MessengerProj/src/main/res/values-it/strings.xml b/MessengerProj/src/main/res/values-it/strings.xml
index 6a9f40cf9..75049b4a3 100644
--- a/MessengerProj/src/main/res/values-it/strings.xml
+++ b/MessengerProj/src/main/res/values-it/strings.xml
@@ -274,7 +274,6 @@
Tu
Caricamento…
- Non hai un lettore video, per favore installane uno per continuare
Non hai applicazioni che possono gestire il tipo di file \'%1$s\': installane una per proseguire
Aggiungere ]]>%1$s]]> al gruppo?
Questo utente è già membro del gruppo
diff --git a/MessengerProj/src/main/res/values-nl/strings.xml b/MessengerProj/src/main/res/values-nl/strings.xml
index 415af378a..e9ddbbee3 100644
--- a/MessengerProj/src/main/res/values-nl/strings.xml
+++ b/MessengerProj/src/main/res/values-nl/strings.xml
@@ -274,7 +274,6 @@
Jij
Bezig met laden
- Je hebt geen mediaspeler. Installeer een mediaspeler om door te gaan.
Je hebt geen apps die bestandstype \'%1$s\' kunnen verwerken, gelieve een compatibele app te installeren
]]>%1$s]]> toevoegen aan de groep?
Gebruiker is al een groepslid
diff --git a/MessengerProj/src/main/res/values-pl/strings.xml b/MessengerProj/src/main/res/values-pl/strings.xml
index a2882ef2e..7342419b7 100644
--- a/MessengerProj/src/main/res/values-pl/strings.xml
+++ b/MessengerProj/src/main/res/values-pl/strings.xml
@@ -277,7 +277,6 @@
Ja
Wczytywanie…
- Nie masz odtwarzacza wideo. Zainstaluj jakiś, aby kontynuować.
Nie masz aplikacji obsługujących pliki typu „%1$s”. Zainstaluj jakąś, aby kontynuować.
Ten kontakt jest już w tej grupie
Przekazać wybrane wiadomości do ]]>%1$s]]>?
diff --git a/MessengerProj/src/main/res/values-pt/strings.xml b/MessengerProj/src/main/res/values-pt/strings.xml
index ba7d5fb77..1b5628b99 100644
--- a/MessengerProj/src/main/res/values-pt/strings.xml
+++ b/MessengerProj/src/main/res/values-pt/strings.xml
@@ -274,7 +274,6 @@
Você
Carregando…
- Você não possui um reprodutor de vídeo, instale um para continuar
Você não possui um aplicativo que suporte o tipo de arquivo \'%1$s\', por favor instale um para continuar
Adicionar ]]>%1$s]]> no grupo?
Este usuário já está neste grupo
diff --git a/MessengerProj/src/main/res/values/strings.xml b/MessengerProj/src/main/res/values/strings.xml
index 465253ba9..ff62044e9 100644
--- a/MessengerProj/src/main/res/values/strings.xml
+++ b/MessengerProj/src/main/res/values/strings.xml
@@ -277,7 +277,6 @@
Me
Loading …
- You don\'t have a video player, please install one to continue
You don\'t have applications that can handle the file type \'%1$s\', please install one to continue
This contact is already in this group.
Forward selected messages to ]]>%1$s]]>?