Safe Text Beta Community Report 📲 Google Pixel XL 2, Android 8.1.0

Safe Text Beta

This app is a secure messenger with many different features for your privacy. You can delete messages from the conversation, stay anonymous and so on. I like the Idea and I think that even with the current implementation it might find some usage. This app is cross-platform and this affects usability a lot. I am not a big fan of cross-platform apps but I can understand the reason behind it.

I would say that I expect many people complaining about this. There are a couple of possible reasons.

  • This is not a material design app. MD usually better than many others and most of Android users just got used to it. Even if I understand that this app is not about design, I would say that the UX, which MD gives you by default will become a lot better.
  • App performance. Safe Text doesn’t feel like a slow web app and it is quite fast for the cross-platform app but.. it is far from the native. It is not just about the app performance it is also about how fast the UI will be rendered by the system.

Those two things usually matter a lot. If Safe Text is just a prototype to validate the idea it is ok. If not, as I said before - it will find some users for sure but this number will be a lot lower.

Some notes

App version: 1.1.52

Device: Samsung Galaxy Note 4, Android 6.0.1

Design

  • App icon and menu icons resolutions are low. It may become ugly looking on tablets. The user will be able to see pixels. From my side, I would say that I might correlate this fact with the effort that developer puts into the app. Less effort leads to the less amount of trust. If this app is about security then trust matters a lot. My goal here is just to explain a possible way of thinking from the user perspective.
  • UX elements paddings and markings. Some paddings are very small and UI elements are located close to each other. E.X. back arrow on the user registration screen, lost password pop-up elements, etc..

Settings

  • Share icon on the top right is placed on the settings screen. It feels like the user will have to share his settings with someone. Sharing icon should be a moved to the menu with a “share app” description.
  • Sharing on twitter missing a twitter @username. This can help to understand how many people actually shared the app on twitter.
  • There is a note section in the settings but the reason for those notes is not very clear. The user can find out later that it is a status message. I would rename it to the “status message” or something similar.
  • There is a panic button checkbox in the settings. This menu should contain some kind of description to let the user know what does it mean.
  • The settings menu has some editable fields but it doesn’t have a save button. To make it clear, I would move all editable fields to the separate view with the save button. Data visualisation and data editing should be separated on the UX level.

Chat

  • Emoji icon doesn’t open a keyboard sometimes.
  • The app has a custom text selection context and it is not possible to copy paste a text without selecting the existing text. Steps to reproduce - open chat - type some text - long press on the text - select COPY from the context menu - try to past this text in addition to the existing. This is not possible because the original text will always become selected and pasting will do a “replace” action instead of “append”.
  • Russian characters are displayed as ??? in the contact name and contact notes.
  • Long contact name will overlap the menu bar icons. Screenshot.

Back Button

  • Back button doesn’t close an app drawer when it is opened and closes the app instead.

General

  • The user can see an empty contacts screen after the first login. The app should guide the user to the next step. If contacts list is empty, the user should share this app with someone first in order to be able to add him after. The text description is not enough here, the app should provide an optional action to the users like Share button if the contacts list is empty.
  • The app crashed twice during the testing. Both times it was caused by the chat usage. I didn’t find the exact place but I was able to catch a stack trace. It is an SQLite error and it should be easy to find a place where this query is used in the code.

10-25 21:59:00.324 4421 4421 E AndroidRuntime: FATAL EXCEPTION: main 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Process: com.imd.safetext, PID: 4421 10-25 21:59:00.324 4421 4421 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.imd.safetext/com.imd.safetext.MessageActivityGroup}: android.database.sqlite.SQLiteException: near "AND": syntax error (code 1): , while compiling: select key from messages where group_id = AND is_read = 0 AND sender != 2175 10-25 21:59:00.324 4421 4421 E AndroidRuntime: ################################################################# 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Error Code : 1 (SQLITE_ERROR) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Caused By : SQL(query) error or missing database. 10-25 21:59:00.324 4421 4421 E AndroidRuntime: (near "AND": syntax error (code 1): , while compiling: select key from messages where group_id = AND is_read = 0 AND sender != 2175) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: ################################################################# 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread.access$1100(ActivityThread.java:221) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.os.Looper.loop(Looper.java:158) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7225) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Caused by: android.database.sqlite.SQLiteException: near "AND": syntax error (code 1): , while compiling: select key from messages where group_id = AND is_read = 0 AND sender != 2175 10-25 21:59:00.324 4421 4421 E AndroidRuntime: ################################################################# 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Error Code : 1 (SQLITE_ERROR) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: Caused By : SQL(query) error or missing database. 10-25 21:59:00.324 4421 4421 E AndroidRuntime: (near "AND": syntax error (code 1): , while compiling: select key from messages where group_id = AND is_read = 0 AND sender != 2175) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: ################################################################# 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1062) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:627) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1454) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1393) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at com.imd.database.InTouchDataSource.GetReadMsgGroup(InTouchDataSource.java:753) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at com.imd.safetext.MessageActivityGroup.UpdateReadDate(MessageActivityGroup.java:1400) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at com.imd.safetext.MessageActivityGroup.onCreate(MessageActivityGroup.java:391) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6876) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 10-25 21:59:00.324 4421 4421 E AndroidRuntime: ... 9 more


Happy Testing!

  • Safe Text is a texting service that is built with state of the art technology to ensure your privacy and anonymity
Tip us ⚡️ with any news about features you discovered in the app, to share them with the Community of beta testers. Are you looking for more insights? Check our daily Community Reports on TestingCatalog.
About authors:
We are a team of Android enthusiasts exploring top beta apps on daily basis. You can always find more info on Alexey's profile page.