diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index 91e345734..77a6bc309 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -575,6 +575,19 @@ public class Settings { putInt(KEY_SCREEN_LIGHTNESS, value); } + /******************** + ****** Privacy and Security + ********************/ + public static final String KEY_SEC_SECURITY = "enabled_secure"; + public static final boolean VALUE_SEC_SECURITY = false; + + public static boolean getEnabledSecurity() { + return getBoolean(KEY_SEC_SECURITY, VALUE_SEC_SECURITY); + } + public static void putEnabledSecurity(boolean value) { + putBoolean(KEY_READING_FULLSCREEN, value); + } + /******************** ****** Download ********************/ diff --git a/app/src/main/java/com/hippo/ehviewer/ui/DirPickerActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/DirPickerActivity.java index 59dac07ad..798c8205c 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/DirPickerActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/DirPickerActivity.java @@ -23,10 +23,12 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.MenuItem; import android.view.View; +import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; import com.hippo.ehviewer.R; +import com.hippo.ehviewer.Settings; import com.hippo.ripple.Ripple; import com.hippo.widget.DirExplorer; import com.hippo.yorozuya.ViewUtils; @@ -149,4 +151,15 @@ public class DirPickerActivity extends ToolbarActivity mPath.setText(dir.getPath()); } } + + @Override + protected void onResume() { + super.onResume(); + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java index 2910c148f..dd9b273cf 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java @@ -407,6 +407,12 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan if (mGLRootView != null) { mGLRootView.onResume(); } + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/LicenseActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/LicenseActivity.java index 17a1f3c85..0f39c3ce0 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/LicenseActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/LicenseActivity.java @@ -19,9 +19,11 @@ package com.hippo.ehviewer.ui; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.MenuItem; +import android.view.WindowManager; import android.webkit.WebView; import com.hippo.ehviewer.R; +import com.hippo.ehviewer.Settings; public class LicenseActivity extends ToolbarActivity { @@ -59,4 +61,15 @@ public class LicenseActivity extends ToolbarActivity { return super.onOptionsItemSelected(item); } } + + @Override + protected void onResume() { + super.onResume(); + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index f0032a5c9..7d30ab3c5 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -36,6 +36,7 @@ import android.text.TextUtils; import android.view.Gravity; import android.view.MenuItem; import android.view.View; +import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; import android.widget.Toast; @@ -392,6 +393,13 @@ public final class MainActivity extends StageActivity super.onResume(); setNavCheckedItem(mNavCheckedItem); + + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java index e17ca11a0..a678c4da6 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java @@ -22,6 +22,7 @@ import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.MenuItem; import android.view.View; +import android.view.WindowManager; import android.widget.CheckBox; import com.hippo.ehviewer.R; @@ -108,4 +109,15 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick finish(); } } + + @Override + protected void onResume() { + super.onResume(); + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java index 4c0d61dba..e50549a9e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.java @@ -30,14 +30,17 @@ import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.ListAdapter; import com.hippo.ehviewer.R; +import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.ui.fragment.AboutFragment; import com.hippo.ehviewer.ui.fragment.AdvancedFragment; import com.hippo.ehviewer.ui.fragment.DownloadFragment; import com.hippo.ehviewer.ui.fragment.EhFragment; import com.hippo.ehviewer.ui.fragment.ReadFragment; +import com.hippo.ehviewer.ui.fragment.SecFragment; import com.hippo.util.DrawableManager; import java.lang.reflect.Field; @@ -53,6 +56,7 @@ public final class SettingsActivity extends EhPreferenceActivity { DownloadFragment.class.getName(), AdvancedFragment.class.getName(), AboutFragment.class.getName(), + SecFragment.class.getName(), }; private class FakeLayoutInflater extends LayoutInflater { @@ -195,4 +199,15 @@ public final class SettingsActivity extends EhPreferenceActivity { super.onActivityResult(requestCode, resultCode, data); } } + + @Override + protected void onResume() { + super.onResume(); + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/UConfigActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/UConfigActivity.java index 736f815da..f20a065cd 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/UConfigActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/UConfigActivity.java @@ -32,6 +32,7 @@ import android.support.v7.app.AlertDialog; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.WindowManager; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; import android.webkit.JsPromptResult; @@ -43,6 +44,7 @@ import android.widget.EditText; import android.widget.TextView; import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; +import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.client.EhCookieStore; import com.hippo.ehviewer.client.EhUrl; import com.hippo.widget.ProgressView; @@ -248,4 +250,15 @@ public class UConfigActivity extends ToolbarActivity { return true; } } + + @Override + protected void onResume() { + super.onResume(); + if(Settings.getEnabledSecurity()){ + getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE); + }else{ + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java index ebd490f26..23aa503cd 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java @@ -42,7 +42,6 @@ public class AdvancedFragment extends PreferenceFragment implements Preference.O private static final String KEY_DUMP_LOGCAT = "dump_logcat"; private static final String KEY_CLEAR_MEMORY_CACHE = "clear_memory_cache"; - private static final String KEY_PATTERN_PROTECTION = "pattern_protection"; private static final String KEY_EXPORT_DATA = "export_data"; private static final String KEY_IMPORT_DATA = "import_data"; @@ -65,11 +64,6 @@ public class AdvancedFragment extends PreferenceFragment implements Preference.O @Override public void onResume() { super.onResume(); - - Preference patternProtection = findPreference(KEY_PATTERN_PROTECTION); - patternProtection.setSummary(TextUtils.isEmpty(Settings.getSecurity()) ? - R.string.settings_advanced_pattern_protection_not_set : - R.string.settings_advanced_pattern_protection_set); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/SecFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/SecFragment.java new file mode 100644 index 000000000..5e464e5d2 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/SecFragment.java @@ -0,0 +1,30 @@ +package com.hippo.ehviewer.ui.fragment; + +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceFragment; +import android.text.TextUtils; + +import com.hippo.ehviewer.R; +import com.hippo.ehviewer.Settings; + +/** + * Created by Mo10 on 2018/2/10. + */ + +public class SecFragment extends PreferenceFragment { + private static final String KEY_PATTERN_PROTECTION = "pattern_protection"; + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.secure_settings); + } + @Override + public void onResume() { + super.onResume(); + Preference patternProtection = findPreference(KEY_PATTERN_PROTECTION); + patternProtection.setSummary(TextUtils.isEmpty(Settings.getSecurity()) ? + R.string.settings_advanced_pattern_protection_not_set : + R.string.settings_advanced_pattern_protection_set); + } +} diff --git a/app/src/main/res/drawable/v_sec_primary_x24.xml b/app/src/main/res/drawable/v_sec_primary_x24.xml new file mode 100644 index 000000000..290d428a0 --- /dev/null +++ b/app/src/main/res/drawable/v_sec_primary_x24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ba0395797..0f5e784af 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -617,5 +617,8 @@ La contraseña no puede estar vacía Ocurrió algo malo H@H Downloader + Privacidad y seguridad + Captura de pantalla no permitida + Si está habilitado, no puede tomar capturas de pantalla de la aplicación, y el sistema no mostrará el contenido de la aplicación en el selector de tareas diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 73f38c5ad..e680c0778 100755 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -627,5 +627,8 @@ 无法下载压缩包 压缩包 下载压缩包需要 H@H 客户端 + 隐私和安全 + 不允许屏幕抓取 + 启用后,将不能截取该应用的屏幕截图,同时,将不会在系统任务切换器中显示该应用的内容预览\n\n重新启动应用以生效此更改 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 709559c0d..b233e590a 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -627,5 +627,8 @@ 無法下載壓縮包 壓縮包 下載壓縮包需要 H@H 客户端 + 隱私和安全 + 不允許荧幕抓取 + 啟用後,將不能截取該應用的螢幕截圖,同時,將不會在系統任務切換器中顯示該應用的內容預覽\n\n重新啟動應用以生效此更改 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index c8ee8eaaa..9d6028fa8 100755 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -627,5 +627,8 @@ 下載失敗 壓縮檔 下載壓縮檔需要 H@H 客戶端 + 隱私和安全 + 不允許荧幕抓取 + 啟用後,將不能截取該應用的螢幕截圖,同時,將不會在系統任務切換器中顯示該應用的內容預覽\n\n重新啟動應用以生效此更改 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e4e1ea38a..d2715c942 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -678,5 +678,8 @@ Failed to download archive Archive Need H@H client for archive download + Privacy and Security + Not Allowed Screen Capture + If enabled, you cannot take screenshots of the app, and the system will not display app contents in the task switcher\n\nNeed to restart the app for this to take effect diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index e351ccf68..3d57ca03c 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -48,12 +48,6 @@ app:entryValues="@array/read_cache_size_entry_values" android:defaultValue="160"/> - - + + + + + + diff --git a/app/src/main/res/xml/settings_headers.xml b/app/src/main/res/xml/settings_headers.xml index a1c82f418..d3750e12c 100644 --- a/app/src/main/res/xml/settings_headers.xml +++ b/app/src/main/res/xml/settings_headers.xml @@ -33,6 +33,11 @@ android:title="@string/settings_download" android:icon="@drawable/v_download_primary_x24"/> +
+