open unknown files with wildcard intent

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java   |  2 
src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 23 
2 files changed, 15 insertions(+), 10 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -541,7 +541,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 			shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
 			String mime = message.getMimeType();
 			if (mime == null) {
-				mime = "image/webp";
+				mime = "*/*";
 			}
 			shareIntent.setType(mime);
 		}

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -603,7 +603,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 						Toast.LENGTH_SHORT).show();
 			}
 		} else if (message.treatAsDownloadable() != Message.Decision.NEVER) {
-			activity.xmppConnectionService.getHttpConnectionManager().createNewDownloadConnection(message,true);
+			activity.xmppConnectionService.getHttpConnectionManager().createNewDownloadConnection(message, true);
 		}
 	}
 
@@ -614,16 +614,21 @@ public class MessageAdapter extends ArrayAdapter<Message> {
 			return;
 		}
 		Intent openIntent = new Intent(Intent.ACTION_VIEW);
-		openIntent.setDataAndType(Uri.fromFile(file), file.getMimeType());
+		String mime = file.getMimeType();
+		if (mime == null) {
+			mime = "*/*";
+		}
+		openIntent.setDataAndType(Uri.fromFile(file), mime);
 		PackageManager manager = activity.getPackageManager();
 		List<ResolveInfo> infos = manager.queryIntentActivities(openIntent, 0);
-		if (infos.size() > 0) {
-			try {
-				getContext().startActivity(openIntent);
-				return;
-			}  catch (ActivityNotFoundException e) {
-				//ignored
-			}
+		if (infos.size() == 0) {
+			openIntent.setDataAndType(Uri.fromFile(file),"*/*");
+		}
+		try {
+			getContext().startActivity(openIntent);
+			return;
+		}  catch (ActivityNotFoundException e) {
+			//ignored
 		}
 		Toast.makeText(activity,R.string.no_application_found_to_open_file,Toast.LENGTH_SHORT).show();
 	}