diff --git a/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java b/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
index 4b2b67bcb170389a94607f15301d6b334ebf1a62..8781a701cf85dfab7be3c7f3287ee4a2e9c25f32 100644
--- a/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/about/AboutFragment.java
@@ -100,7 +100,7 @@ public class AboutFragment extends BaseSupportFragment<RootPresenter> {
         }
 
         FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
-        Fragment existingFragment = fragmentManager.findFragmentByTag(AboutFragment.TAG);
+        Fragment existingFragment = fragmentManager.findFragmentByTag(TAG);
         if (existingFragment == null) {
             ((HomeActivity) getActivity()).goToAbout();
         }
diff --git a/ring-android/app/src/main/java/cx/ring/account/AccountEditionFragment.java b/ring-android/app/src/main/java/cx/ring/account/AccountEditionFragment.java
index a6e7c61b3ff5c7e02f7e5eddf6a6db0fe5b68671..0329a4f645f53e9fd7d38bfed862cd4172299357 100644
--- a/ring-android/app/src/main/java/cx/ring/account/AccountEditionFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/account/AccountEditionFragment.java
@@ -137,7 +137,7 @@ public class AccountEditionFragment extends BaseSupportFragment<AccountEditionPr
 
     @Override
     public void displaySummary(String accountId) {
-        toggleView(accountId);
+        toggleView(accountId, true);
         FragmentManager fragmentManager = requireFragmentManager();
         Fragment existingFragment = fragmentManager.findFragmentByTag(JamiAccountSummaryFragment.TAG);
         if (existingFragment == null) {
@@ -157,7 +157,7 @@ public class AccountEditionFragment extends BaseSupportFragment<AccountEditionPr
 
     @Override
     public void displaySIPView(String accountId) {
-        toggleView(accountId);
+        toggleView(accountId, false);
     }
 
     @Override
@@ -230,8 +230,8 @@ public class AccountEditionFragment extends BaseSupportFragment<AccountEditionPr
         if (getActivity() instanceof HomeActivity)
             ((HomeActivity) getActivity()).setToolbarOutlineState(true);
         if (binding.fragmentContainer.getVisibility() != View.VISIBLE) {
-            toggleView(mAccountId);
-            return  true;
+            // toggleView(mAccountId);
+            return true;
         }
         FragmentManager fragmentManager = requireFragmentManager();
         JamiAccountSummaryFragment summaryFragment = (JamiAccountSummaryFragment) fragmentManager.findFragmentByTag(JamiAccountSummaryFragment.TAG);
@@ -244,22 +244,21 @@ public class AccountEditionFragment extends BaseSupportFragment<AccountEditionPr
         return fragment instanceof JamiAccountSummaryFragment;
     }
 
-    private void toggleView(String accountId) {
+    private void toggleView(String accountId, boolean isJami) {
         mAccountId = accountId;
-        boolean isRing = presenter.getAccount(mAccountId).isRing();
-
-        binding.slidingTabs.setVisibility(isRing? View.GONE : View.VISIBLE);
-        binding.pager.setVisibility(isRing? View.GONE : View.VISIBLE);
-        binding.fragmentContainer.setVisibility(isRing? View.VISIBLE : View.GONE);
+        binding.slidingTabs.setVisibility(isJami? View.GONE : View.VISIBLE);
+        binding.pager.setVisibility(isJami? View.GONE : View.VISIBLE);
+        binding.fragmentContainer.setVisibility(isJami? View.VISIBLE : View.GONE);
         presenter.prepareOptionsMenu();
-        setBackListenerEnabled(isRing);
+        setBackListenerEnabled(isJami);
 
         FragmentManager fragmentManager = requireFragmentManager();
-        JamiAccountSummaryFragment fragment = (JamiAccountSummaryFragment) fragmentManager.findFragmentByTag(JamiAccountSummaryFragment.TAG);
-        if (fragment != null) {
-            fragment.setFragmentVisibility(isRing);
-            if (isRing)
-                fragment.setAccount(accountId);
+        Fragment fragment = fragmentManager.findFragmentByTag(JamiAccountSummaryFragment.TAG);
+        if (fragment instanceof JamiAccountSummaryFragment) {
+            JamiAccountSummaryFragment f = (JamiAccountSummaryFragment) fragment;
+            f.setFragmentVisibility(isJami);
+            if (isJami)
+                f.setAccount(accountId);
         }
     }
 
diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
index 5de8497270163dd69c44f84630244271dad31fbb..4c8fb60e2248eb1e9bea4428300deb431e920fcf 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java
@@ -371,7 +371,7 @@ public class HomeActivity extends AppCompatActivity implements BottomNavigationV
         bundle.putString(ContactRequestsFragment.ACCOUNT_ID, accountID);
         mNotificationService.cancelTrustRequestNotification(accountID);
         if (fContent instanceof ContactRequestsFragment) {
-            ((ContactRequestsFragment) fContent).presentForAccount(bundle);
+            ((ContactRequestsFragment) fContent).presentForAccount(accountID);
             return;
         }
         fContent = new ContactRequestsFragment();
@@ -486,17 +486,20 @@ public class HomeActivity extends AppCompatActivity implements BottomNavigationV
 
     @Override
     public boolean onNavigationItemSelected(@NonNull MenuItem item) {
-        Bundle bundle = new Bundle();
+        Account account = mAccountService.getCurrentAccount();
+        if (account == null)
+            return false;
 
+        Bundle bundle = new Bundle();
         switch (item.getItemId()) {
             case R.id.navigation_requests:
-                bundle.putString(ContactRequestsFragment.ACCOUNT_ID, mAccountService.getCurrentAccount().getAccountID());
                 if (fContent instanceof ContactRequestsFragment) {
-                    ((ContactRequestsFragment) fContent).presentForAccount(bundle);
+                    ((ContactRequestsFragment) fContent).presentForAccount(account.getAccountID());
                     break;
                 }
                 popCustomBackStack();
                 fContent = new ContactRequestsFragment();
+                bundle.putString(ContactRequestsFragment.ACCOUNT_ID, account.getAccountID());
                 fContent.setArguments(bundle);
                 getSupportFragmentManager().beginTransaction()
                         .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
@@ -521,7 +524,6 @@ public class HomeActivity extends AppCompatActivity implements BottomNavigationV
                 showToolbarSpinner();
                 break;
             case R.id.navigation_settings:
-                Account account = mAccountService.getCurrentAccount();
 
                 if (account.needsMigration()) {
                     Log.d(TAG, "launchAccountMigrationActivity: Launch account migration activity");
diff --git a/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java b/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
index 85b71ba7eb892911cd65a74b90dabf4f2c931a05..415ccd568041b71a9a47361f5004ab8b4cd1ead9 100644
--- a/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/contactrequests/ContactRequestsFragment.java
@@ -75,14 +75,11 @@ public class ContactRequestsFragment extends BaseSupportFragment<ContactRequests
         binding = null;
     }
 
-    public void presentForAccount(Bundle bundle) {
-        if (bundle != null && bundle.containsKey(ACCOUNT_ID)) {
-            String accountId = bundle.getString(ACCOUNT_ID);
-            presenter.updateAccount(accountId);
-            Bundle arguments = getArguments();
-            if (arguments != null)
-                arguments.putString(ACCOUNT_ID, accountId);
-        }
+    public void presentForAccount(@NonNull String accountId) {
+        presenter.updateAccount(accountId);
+        Bundle arguments = getArguments();
+        if (arguments != null)
+            arguments.putString(ACCOUNT_ID, accountId);
     }
 
     @Override
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index 2c57c92cb38134ad6caacf5b36f96a82cd4d36d7..ce0dd800f4b73c0c8a6f2b443a40d7a0bb57f963 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -519,21 +519,19 @@ public class ConversationFragment extends BaseSupportFragment<ConversationPresen
             Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
             if (takePictureIntent.resolveActivity(c.getPackageManager()) != null) {
                 // Create the File where the photo should go
-                File photoFile;
                 try {
-                    photoFile = AndroidFileUtils.createImageFile(c);
-                } catch (IOException ex) {
-                    Log.e(TAG, "takePicture: error creating temporary file", ex);
-                    return;
+                    File photoFile = AndroidFileUtils.createImageFile(c);
+                    Log.i(TAG, "takePicture: trying to save to " + photoFile);
+                    android.net.Uri photoURI = ContentUriHandler.getUriForFile(c, ContentUriHandler.AUTHORITY_FILES, photoFile);
+                    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
+                            .putExtra("android.intent.extras.CAMERA_FACING", 1)
+                            .putExtra("android.intent.extras.LENS_FACING_FRONT", 1)
+                            .putExtra("android.intent.extra.USE_FRONT_CAMERA", true);
+                    mCurrentPhoto = photoFile;
+                    startActivityForResult(takePictureIntent, REQUEST_CODE_TAKE_PICTURE);
+                } catch (Exception e) {
+                    Toast.makeText(c, "Error taking picture: " + e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                 }
-                Log.i(TAG, "takePicture: trying to save to " + photoFile);
-                mCurrentPhoto = photoFile;
-                android.net.Uri photoURI = ContentUriHandler.getUriForFile(c, ContentUriHandler.AUTHORITY_FILES, photoFile);
-                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
-                takePictureIntent.putExtra("android.intent.extras.CAMERA_FACING", 1);
-                takePictureIntent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1);
-                takePictureIntent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true);
-                startActivityForResult(takePictureIntent, REQUEST_CODE_TAKE_PICTURE);
             }
         }
     }
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/LocationSharingFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/LocationSharingFragment.java
index 958d2292347bfc64909b1b67d17dcdf8b2765736..a1c4d17c0027765f175313e66a9561fa45f30151 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/LocationSharingFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/LocationSharingFragment.java
@@ -263,8 +263,13 @@ public class LocationSharingFragment extends Fragment {
     public void onResume() {
         super.onResume();
         mMap.onResume();
-        if (overlay != null)
-            overlay.enableMyLocation();
+        if (overlay != null) {
+            try {
+                overlay.enableMyLocation();
+            } catch (Exception e) {
+                Log.w(TAG, e);
+            }
+        }
     }
 
     public void onPause(){
diff --git a/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java b/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java
index 3a32c2106ed956ddda0426f3288cab4bc9087f96..d80166c8137ef51bcf0c153b1a967650a1b96523 100644
--- a/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/mvp/BaseSupportFragment.java
@@ -29,7 +29,6 @@ import androidx.annotation.IdRes;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
 import cx.ring.R;
-import cx.ring.account.JamiAccountCreationFragment;
 import cx.ring.model.Error;
 
 public abstract class BaseSupportFragment<T extends RootPresenter> extends Fragment implements BaseView {
@@ -86,16 +85,16 @@ public abstract class BaseSupportFragment<T extends RootPresenter> extends Fragm
                 .beginTransaction()
                 .setCustomAnimations(R.anim.slide_in_right,
                         R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
-                .replace(content, fragment, JamiAccountCreationFragment.TAG)
-                .addToBackStack(JamiAccountCreationFragment.TAG)
+                .replace(content, fragment, TAG)
+                .addToBackStack(TAG)
                 .commit();
     }
 
     protected void replaceFragment(Fragment fragment, @IdRes int content) {
         getFragmentManager()
                 .beginTransaction()
-                .replace(content, fragment, JamiAccountCreationFragment.TAG)
-                .addToBackStack(JamiAccountCreationFragment.TAG)
+                .replace(content, fragment, TAG)
+                .addToBackStack(TAG)
                 .commit();
     }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVJamiLinkAccountFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVJamiLinkAccountFragment.java
index 45d822c537428d25bae9d1452cda164cabc87fca..5c02f93b8beb41515b491d1d641c5bc060d96665 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVJamiLinkAccountFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVJamiLinkAccountFragment.java
@@ -45,7 +45,7 @@ public class TVJamiLinkAccountFragment extends JamiGuidedStepFragment<JamiLinkAc
     public TVJamiLinkAccountFragment() {
     }
 
-    public static TVJamiLinkAccountFragment newInstance(AccountCreationModelImpl ringAccountViewModel) {
+    public static TVJamiLinkAccountFragment newInstance(@NonNull AccountCreationModelImpl ringAccountViewModel) {
         TVJamiLinkAccountFragment fragment = new TVJamiLinkAccountFragment();
         fragment.model = ringAccountViewModel;
         return fragment;
@@ -57,7 +57,7 @@ public class TVJamiLinkAccountFragment extends JamiGuidedStepFragment<JamiLinkAc
         super.onViewCreated(view, savedInstanceState);
 
         presenter.init(model);
-        if (model.getPhoto() != null) {
+        if (model != null && model.getPhoto() != null) {
             getGuidanceStylist().getIconView().setImageBitmap(model.getPhoto());
         }
     }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/account/TVShareFragment.java b/ring-android/app/src/main/java/cx/ring/tv/account/TVShareFragment.java
index 4c2972f79123a6179eb8596f99858d2143b93c1b..889c0d76fa000621d12e4f3cec28c20d50a84b46 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/account/TVShareFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/account/TVShareFragment.java
@@ -104,6 +104,6 @@ public class TVShareFragment extends BaseSupportFragment<SharePresenter> impleme
                 .subscribe(a -> {
                     binding.qrUserPhoto.setVisibility(View.VISIBLE);
                     binding.qrUserPhoto.setImageDrawable(a);
-                }, e-> Log.e(TAG, e.getMessage())));
+                }, e-> Log.e(TVShareFragment.class.getSimpleName(), e.getMessage())));
     }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.java b/ring-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.java
index b2fa171d955a18858474250e6ae507e1aaad1f6c..20d5f45c66e5142513dfd1cd6b53698868da9e43 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/conversation/TvConversationFragment.java
@@ -34,6 +34,7 @@ import android.os.Bundle;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.ContextCompat;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.transition.TransitionManager;
@@ -89,6 +90,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 
 public class TvConversationFragment extends BaseSupportFragment<ConversationPresenter> implements ConversationView {
+    private static final String TAG = TvConversationFragment.class.getSimpleName();
 
     private static final String ARG_MODEL = "model";
 
@@ -111,15 +113,13 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
 
     private int mSelectedPosition;
 
-    private static final String LOG_TAG = "AudioRecordTest";
     private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
     private static File fileName = null;
 
     private MediaRecorder recorder = null;
     private MediaPlayer player = null;
 
-    private boolean permissionToRecordAccepted = false;
-    private String[] permissions = {Manifest.permission.RECORD_AUDIO};
+    private String[] permissions = { Manifest.permission.RECORD_AUDIO };
 
     boolean mStartRecording = true;
     boolean mStartPlaying = true;
@@ -145,7 +145,6 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
         if (getArguments() != null) {
             mTvListViewModel = getArguments().getParcelable(ARG_MODEL);
         }
-        requestPermissions(permissions, REQUEST_RECORD_AUDIO_PERMISSION);
     }
 
     @Nullable
@@ -164,9 +163,11 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
 
     // Create an intent that can start the Speech Recognizer activity
     private void displaySpeechRecognizer() {
-        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
-        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
-        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say something...");
+        if (!checkAudioPermission())
+            return;
+        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
+                .putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
+                .putExtra(RecognizerIntent.EXTRA_PROMPT, getText(R.string.conversation_input_speech_hint));
         startActivityForResult(intent, REQUEST_SPEECH_CODE);
     }
 
@@ -239,6 +240,14 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
         mRecyclerView.setAdapter(mAdapter);
     }
 
+    private boolean checkAudioPermission() {
+        if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
+            requestPermissions(permissions, REQUEST_RECORD_AUDIO_PERMISSION);
+            return false;
+        }
+        return true;
+    }
+
     @Override
     public boolean onContextItemSelected(@NonNull MenuItem item) {
         if (mAdapter.onContextItemSelected(item))
@@ -248,7 +257,6 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
         switch (requestCode) {
             case REQUEST_CODE_PHOTO:
                 if (resultCode == Activity.RESULT_OK && data != null) {
@@ -465,13 +473,9 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
     @Override
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-        switch (requestCode) {
-            case REQUEST_RECORD_AUDIO_PERMISSION:
-                permissionToRecordAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
-                break;
+        if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) {
+            // NOOP
         }
-        if (!permissionToRecordAccepted) getActivity().finish();
-
     }
 
     private void onRecord(boolean start) {
@@ -497,7 +501,7 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
             player.prepare();
             player.start();
         } catch (IOException e) {
-            Log.e(LOG_TAG, "prepare() failed");
+            Log.e(TAG, "prepare() failed");
         }
     }
 
@@ -507,6 +511,8 @@ public class TvConversationFragment extends BaseSupportFragment<ConversationPres
     }
 
     private void startRecording() {
+        if (!checkAudioPermission())
+            return;
         if (recorder != null) {
             return;
         }
diff --git a/ring-android/app/src/main/java/cx/ring/utils/ContentUriHandler.java b/ring-android/app/src/main/java/cx/ring/utils/ContentUriHandler.java
index 8272aecd991c16ac94a817b3f0003c3e8bf85f90..a02c6c250d26592421cb8892f0ae54e915af79ef 100644
--- a/ring-android/app/src/main/java/cx/ring/utils/ContentUriHandler.java
+++ b/ring-android/app/src/main/java/cx/ring/utils/ContentUriHandler.java
@@ -58,7 +58,6 @@ public class ContentUriHandler {
 
     public static Uri getUriForFile(@NonNull Context context, @NonNull String authority, @NonNull File file) {
         if (HUAWEI_MANUFACTURER.equalsIgnoreCase(Build.MANUFACTURER)) {
-            Log.w(TAG, "Using a Huawei device Increased likelihood of failure...");
             try {
                 return FileProvider.getUriForFile(context, authority, file);
             } catch (IllegalArgumentException e) {
diff --git a/ring-android/app/src/main/res/values/strings.xml b/ring-android/app/src/main/res/values/strings.xml
index 81d917ccb86981650bb8df1fc9283380db2a65a8..68c0be48fae9fcff432745a2e194189bb37dc11c 100644
--- a/ring-android/app/src/main/res/values/strings.xml
+++ b/ring-android/app/src/main/res/values/strings.xml
@@ -330,9 +330,10 @@ along with this program; if not, write to the Free Software
     <string name="tv_audio_play">Play</string>
     <string name="tv_audio_pause">Pause</string>
     <string name="tv_dialog_send">Send</string>
-    <string name="tv_audio_recording">Recording...</string>
+    <string name="tv_audio_recording">Recording…</string>
     <string name="tv_send_text">Send Text</string>
     <string name="tv_send_audio">Send Audio</string>
     <string name="tv_send_video">Send Media</string>
+    <string name="conversation_input_speech_hint">Say something…</string>
 
 </resources>