use static (not translated) text for Privacy policy and TOS

Daniel Gultsch created

For a long time Quicksy had a privacy policy written by myself that explains
in plain English what data we store and how we use it.
https://quicksy.im/#privacy

Google doesn’t like that and prefers that we use some bullshit template that
is extremely vague, doesn’t explain anything and gives us permission to do
basically everything. (At least I think so. I don’t understand the text I
copy pasted)

Apparantly the text in the app is important as well (BARD didn’t explain
that very well when it reviewed our app) therfor we need a static text (not
allow translations)

Furthermore the data safety section on Google Play now claims we store the
users address book even though we don’t actually. But who cares; nobody reads
this and we just do this to make the machine happy. Cool!

Change summary

build.gradle                                                           | 4 
src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java | 6 
src/main/res/values/strings.xml                                        | 5 
src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java            | 2 
src/quicksy/res/layout/activity_tos.xml                                | 2 
5 files changed, 11 insertions(+), 8 deletions(-)

Detailed changes

build.gradle 🔗

@@ -91,7 +91,7 @@ android {
     defaultConfig {
         minSdkVersion 21
         targetSdkVersion 32
-        versionCode 42051
+        versionCode 42053
         versionName "2.12.2"
         archivesBaseName += "-$versionName"
         applicationId "eu.siacs.conversations"
@@ -227,7 +227,7 @@ android {
         }
     }
     lint {
-        disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource'
+        disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource', 'ExtraTranslation'
     }
 
     android.applicationVariants.all { variant ->

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

@@ -757,7 +757,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
                         final AtomicBoolean requestPermission = new AtomicBoolean(false);
                         builder.setTitle(R.string.sync_with_contacts);
                         if (QuickConversationsService.isQuicksy()) {
-                            builder.setMessage(Html.fromHtml(getString(R.string.sync_with_contacts_quicksy)));
+                            builder.setMessage(Html.fromHtml(getString(R.string.sync_with_contacts_quicksy_static)));
                         } else {
                             builder.setMessage(getString(R.string.sync_with_contacts_long, getString(R.string.app_name)));
                         }
@@ -775,9 +775,11 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
                         builder.setOnDismissListener(dialog -> {
                             if (QuickConversationsService.isConversations() && requestPermission.compareAndSet(false, true)) {
                                 requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_SYNC_CONTACTS);
-
                             }
                         });
+                        if (QuickConversationsService.isQuicksy()) {
+                            builder.setNegativeButton(R.string.decline, null);
+                        }
                         builder.setCancelable(QuickConversationsService.isQuicksy());
                         final AlertDialog dialog = builder.create();
                         dialog.setCanceledOnTouchOutside(QuickConversationsService.isQuicksy());

src/main/res/values/strings.xml 🔗

@@ -517,7 +517,7 @@
     <string name="no_camera_permission">Grant %1$s access to the camera</string>
     <string name="sync_with_contacts">Synchronize with contacts</string>
     <string name="sync_with_contacts_long">%1$s wants permission to access your address book to match it with your XMPP contact list.\nThis will display your contacts’ full names and avatars.\n\n%1$s will only read your address book and match it locally without uploading anything to your server.</string>
-    <string name="sync_with_contacts_quicksy"><![CDATA[Quicksy needs access to your contacts’ phone numbers to make suggestions about possible contacts who are already on Quicksy.<br><br>We will not store a copy of those phone numbers.\n\nFor more information read our <a href="https://quicksy.im/privacy.htm">privacy policy</a>.<br><br>You will now be asked to grant permission to access your contacts.]]></string>
+    <string name="sync_with_contacts_quicksy_static" translatable="false"><![CDATA[Quicksy stores your contacts’ phone numbers to make suggestions about possible contacts who are already on Quicksy.<br><br>By continuing you agree to our <a href="https://quicksy.im/privacy.htm">Privacy Policy</a> and our <a href="https://quicksy.im/tos.htm">Terms &amp; Conditions</a>.<br><br>You will now be asked to grant permission to access your contacts.]]></string>
     <string name="notify_on_all_messages">Notify on all messages</string>
     <string name="notify_only_when_highlighted">Notify only when mentioned</string>
     <string name="notify_never">Notifications disabled</string>
@@ -542,7 +542,7 @@
     <string name="share_uri_with">Share URI with…</string>
     <string name="welcome_header" translatable="false">Join the Conversation</string>
     <string name="welcome_header_quicksy" translatable="false">Have some Quick Conversations</string>
-    <string name="welcome_text_quicksy"><![CDATA[Quicksy is a spin off of the popular XMPP client Conversations with automatic contact discovery.<br><br>You sign up with your phone number and Quicksy will automatically—based on the phone numbers in your address book—suggest possible contacts to you.<br><br>By signing up you agree to our <a href="https://quicksy.im/privacy.htm">privacy policy</a>.]]></string>
+    <string name="welcome_text_quicksy_static" translatable="false"><![CDATA[Quicksy is a spin off of the popular XMPP client Conversations with automatic contact discovery.<br><br>You sign up with your phone number and Quicksy will automatically—based on the phone numbers in your address book—suggest possible contacts to you.<br>Quicksy stores your contacts’ phone numbers to make suggestions about possible contacts who are already on Quicksy.<br>By signing up you agree to our <a href="https://quicksy.im/privacy.htm">Privacy Policy</a> and our <a href="https://quicksy.im/tos.htm">Terms &amp; Conditions</a>.]]></string>
     <string name="agree_and_continue">Agree and continue</string>
     <string name="magic_create_text">A guide is set up for account creation on conversations.im.\nWhen picking conversations.im as a provider you will be able to communicate with users of other providers by giving them your full XMPP address.</string>
     <string name="your_full_jid_will_be">Your full XMPP address will be: %s</string>
@@ -1005,5 +1005,6 @@
     <string name="pref_up_push_server_title">Push Server</string>
     <string name="pref_up_push_server_summary">A user-chosen push server to relay push messages via XMPP to your device.</string>
     <string name="no_account_deactivated">None (deactivated)</string>
+    <string name="decline">Decline</string>
 
 </resources>

src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java 🔗

@@ -66,7 +66,7 @@ public class TosActivity extends XmppActivity {
             startActivity(intent);
             finish();
         });
-        welcomeText.setText(Html.fromHtml(getString(R.string.welcome_text_quicksy)));
+        welcomeText.setText(Html.fromHtml(getString(R.string.welcome_text_quicksy_static)));
         welcomeText.setMovementMethod(LinkMovementMethod.getInstance());
 
     }

src/quicksy/res/layout/activity_tos.xml 🔗

@@ -46,7 +46,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="8dp"
-                    android:text="@string/welcome_text_quicksy"
+                    android:text="@string/welcome_text_quicksy_static"
                     android:textAppearance="@style/TextAppearance.Conversations.Body1"/>
                 </LinearLayout>
                 <Button