diff --git a/FAQ.md b/FAQ.md index 427138428b..56be71552b 100644 --- a/FAQ.md +++ b/FAQ.md @@ -383,6 +383,7 @@ Fonts, sizes, colors, etc should be material design whenever possible. * [(178) Why are widgets not updating?](#user-content-faq178) * [(179) What are reply templates?](#user-content-faq179) * [(180) How do I use LanguageTool?](#user-content-faq180) +* [(181) How do I use VirusTotal?](#user-content-faq181) [I have another question.](#user-content-get-support) @@ -4845,7 +4846,7 @@ Templates can have the following options: **(180) How do I use LanguageTool?** -LanguageTool need to be enabled in the miscellaneous settings. +LanguageTool integration needs to be enabled in the miscellaneous settings. After writing some text, you can long press on the save draft button to perform a grammar, style, and spell check via [LanguageTool](https://languagetool.org/). Texts with suggestions will be marked and if you tap on a marked suggestion, @@ -4854,6 +4855,24 @@ else you can double tap or long press the marked text to show suggestions.
+ +**(181) How do I use VirusTotal?** + +VirusTotal integration needs to be enabled in the miscellaneous settings. +This will show a *scan* icon button for each attachment. + +Without entering an API key, tapping on the scan button will calculate the SHA-256 hash of the attached file and open the corresponding file report on the VirusTotal website. +If the file is not known by VirusTotal ("*Item not found*"), it is probably okay, unless it contains a new virus not being detected by virus scanners yet. + +With entering an API key, there will be a dialog showing the number of virus scanners detecting the file. +Tapping on the info button will open the corresponding file report on the VirusTotal website. + +To get an API key, you'll need to register on the VirusTotal website. + +This feature was added in version 1.1941 and is available in non Play store versions only. + +
+

Get support

🌎 [Google Translate](https://translate.google.com/translate?sl=en&u=https://github.com/M66B/FairEmail/blob/master/FAQ.md%23user-content-get-support) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 68fad2278f..d8f014c119 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -124,6 +124,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private ImageButton ibDeepL; private SwitchCompat swVirusTotal; private TextView tvVirusTotalPrivacy; + private ImageButton ibVirusTotal; private EditText etVirusTotal; private SwitchCompat swUpdates; private ImageButton ibChannelUpdated; @@ -314,6 +315,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc ibDeepL = view.findViewById(R.id.ibDeepL); swVirusTotal = view.findViewById(R.id.swVirusTotal); tvVirusTotalPrivacy = view.findViewById(R.id.tvVirusTotalPrivacy); + ibVirusTotal = view.findViewById(R.id.ibVirusTotal); etVirusTotal = view.findViewById(R.id.etVirusTotal); swUpdates = view.findViewById(R.id.swUpdates); ibChannelUpdated = view.findViewById(R.id.ibChannelUpdated); @@ -659,6 +661,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + ibVirusTotal.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Helper.viewFAQ(v.getContext(), 181); + } + }); + etVirusTotal.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index 31f382960f..6109ae4071 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -416,6 +416,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swVirusTotal" /> + + + app:layout_constraintTop_toBottomOf="@id/ibVirusTotal" /> + app:constraint_referenced_ids="swVirusTotal,tvVirusTotalPrivacy,ibVirusTotal,etVirusTotal" />