hide record audio feature if mircophone is not available

Daniel Gultsch created

Change summary

src/main/AndroidManifest.xml                                                   |  4 
src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java             |  2 
src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java | 10 
3 files changed, 14 insertions(+), 2 deletions(-)

Detailed changes

src/main/AndroidManifest.xml 🔗

@@ -43,6 +43,10 @@
         android:name="android.hardware.camera.autofocus"
         android:required="false"/>
 
+    <uses-feature
+        android:name="android.hardware.microphone"
+        android:required="false"/>
+
 
     <application
         android:allowBackup="true"

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

@@ -72,6 +72,7 @@ import eu.siacs.conversations.ui.interfaces.OnConversationSelected;
 import eu.siacs.conversations.ui.interfaces.OnConversationsListItemUpdated;
 import eu.siacs.conversations.ui.service.EmojiService;
 import eu.siacs.conversations.ui.util.ActivityResult;
+import eu.siacs.conversations.ui.util.ConversationMenuConfigurator;
 import eu.siacs.conversations.ui.util.MenuDoubleTabUtil;
 import eu.siacs.conversations.ui.util.PendingItem;
 import eu.siacs.conversations.utils.ExceptionHelper;
@@ -364,6 +365,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
 	@Override
 	protected void onCreate(final Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
+		ConversationMenuConfigurator.reloadFeatures(this);
 		OmemoSetting.load(this);
 		new EmojiService(this).init();
 		this.binding = DataBindingUtil.setContentView(this, R.layout.activity_conversations);

src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java 🔗

@@ -29,6 +29,7 @@
 
 package eu.siacs.conversations.ui.util;
 
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.provider.MediaStore;
@@ -45,6 +46,12 @@ import eu.siacs.conversations.entities.Message;
 
 public class ConversationMenuConfigurator {
 
+	private static boolean microphoneAvailable = false;
+
+	public static void reloadFeatures(Context context) {
+		microphoneAvailable = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MICROPHONE);
+	}
+
 	public static void configureAttachmentMenu(@NonNull Conversation conversation, Menu menu) {
 		final MenuItem menuAttach = menu.findItem(R.id.action_attach_file);
 
@@ -54,12 +61,11 @@ public class ConversationMenuConfigurator {
 		} else {
 			visible = true;
 		}
-
 		menuAttach.setVisible(visible);
-
 		if (!visible) {
 			return;
 		}
+		menu.findItem(R.id.attach_record_voice).setVisible(microphoneAvailable);
 	}
 
 	public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) {