Populate the About:Privacy Policy tab.
authorSoren Stoutner <soren@stoutner.com>
Sat, 4 Jun 2016 02:22:57 +0000 (19:22 -0700)
committerSoren Stoutner <soren@stoutner.com>
Sat, 4 Jun 2016 02:22:57 +0000 (19:22 -0700)
.idea/dictionaries/soren.xml
app/src/free/assets/about_privacy_policy.html [new file with mode: 0644]
app/src/main/assets/about_permissions.html
app/src/main/assets/about_privacy_policy.html [new file with mode: 0644]
app/src/main/java/com/stoutner/privacybrowser/AboutActivity.java
app/src/main/java/com/stoutner/privacybrowser/AboutTabFragment.java
app/src/main/res/values/strings.xml

index 1dca8f5263c6515a77c6f7a7c4d2b0ef9721a188..7e004c4690ab1a87526497ece009cbfd9327853a 100644 (file)
@@ -2,20 +2,26 @@
   <dictionary name="soren">
     <words>
       <w>androidversion</w>
+      <w>anonymized</w>
       <w>aren</w>
       <w>buildapi</w>
       <w>buildversion</w>
       <w>chromeversion</w>
+      <w>exynos</w>
+      <w>intl</w>
       <w>khtml</w>
       <w>konqueror</w>
       <w>linearlayout</w>
       <w>mozilla</w>
       <w>nojs</w>
       <w>relativelayout</w>
+      <w>samsung</w>
       <w>securitypatch</w>
       <w>snackbar</w>
+      <w>techrepublic</w>
       <w>textview</w>
       <w>webkitversion</w>
+      <w>zenlte</w>
     </words>
   </dictionary>
 </component>
\ No newline at end of file
diff --git a/app/src/free/assets/about_privacy_policy.html b/app/src/free/assets/about_privacy_policy.html
new file mode 100644 (file)
index 0000000..1abb027
--- /dev/null
@@ -0,0 +1,63 @@
+<html>
+<body>
+<h3><font color="0D4781">Privacy Browser Free</font></h3>
+<p><strong>Privacy Browser Free does not collect any user information</strong>.</p>
+
+<hr />
+
+<h3><font color="0D4781">Advertisements</font></h3>
+<p>Privacy Browser Free displays a banner add across the bottom of the screen using the Google's AdMob network,
+    which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
+    the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
+    AdMob reports anonymized summaries of the following information. <strong>Stoutner may use this information for any purpose</strong>.</p>
+<ul>
+    <li><strong>Total impressions</strong></li>
+    <li><strong>Total clicks</strong></li>
+    <li><strong>Platforms</strong> (eg. high-end mobile devices, tablets)</li>
+    <li><strong>Activity by country</strong></li>
+</ul>
+
+<hr />
+
+<h3><font color="0D4781">Google Play Ratings</font></h3>
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Google provides developers with anonymized summaries of the following information related to user ratings.
+    <strong>Stoutner may use this information for any purpose</strong>.</p>
+<ul>
+    <li><strong>Country</strong></li>
+    <li><strong>Language</strong></li>
+    <li><strong>App version</strong></li>
+    <li><strong>Android version</strong></li>
+    <li><strong>Device</strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><strong>Tablets</strong> (eg. Tablets 10" and above)</li>
+</ul>
+
+<hr />
+
+<h3><font color="0D4781">Google Play Reviews</font></h3>
+<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
+    Google provides some or all of the following information to the developer.
+    <strong>Stoutner may use this information for any purpose</strong>.</p>
+<ul>
+    <li><strong>Version code</strong> (eg. 7)</li>
+    <li><strong>Version name</strong> (eg. 1.6)</li>
+    <li><strong>Android version</strong> (eg. Android 5.1)</li>
+    <li><strong>Device</strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
+    <li><strong>Manufacturer</strong> (eg. Samsung)</li>
+    <li><strong>Device type</strong> (eg. Phone)</li>
+    <li><strong>CPU make</strong> (eg. Samsung)</li>
+    <li><strong>CPU model</strong> (eg. Exynos 7420)</li>
+    <li><strong>Screen density</strong> (eg. 560 dpi)</li>
+    <li><strong>Screen size</strong> (eg. 2560 x 1440)</li>
+    <li><strong>RAM</strong> (eg. 4096 MB)</li>
+    <li><strong>Native platform</strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+    <li><strong>OpenGL ES version</strong> (eg. 3.1)</li>
+    <li><strong>Device language</strong> (eg. English)</li>
+</ul>
+
+<hr />
+<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+</body>
+</html>
\ No newline at end of file
index adc0ddf06ffd09f1c44277a91eb98521e9aaf1cd..77ebdbf770518b46d159a6fc47255530f6c16157 100644 (file)
@@ -1,8 +1,10 @@
 <html>
 <body>
 <h2>Privacy Browser uses the following permissions.</h2>
+
 <h3>Have full network access (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a>)</h3>
 <p>Required for the WebView to access the internet.  Without this permission, Privacy Browser would be “No Browser: Protect Your Privacy by Staying Completely Off the Internet”.</p>
+
 <h3>Install shortcuts (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a>)</h3>
 <p>Required to add shortcuts for websites to the launcher desktop.</p>
 </body>
diff --git a/app/src/main/assets/about_privacy_policy.html b/app/src/main/assets/about_privacy_policy.html
new file mode 100644 (file)
index 0000000..2aa3f2a
--- /dev/null
@@ -0,0 +1,48 @@
+<html>
+<body>
+<h3><font color="0D4781">Privacy Browser</font></h3>
+<p><strong>Privacy Browser does not collect any user information</strong>.</p>
+
+<hr />
+
+<h3><font color="0D4781">Google Play Ratings</font></h3>
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Google provides developers with anonymized summaries of the following information related to user ratings.
+    <strong>Stoutner may use this information for any purpose</strong>.</p>
+<ul>
+    <li><strong>Country</strong></li>
+    <li><strong>Language</strong></li>
+    <li><strong>App version</strong></li>
+    <li><strong>Android version</strong></li>
+    <li><strong>Device</strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><strong>Tablets</strong> (eg. Tablets 10" and above)</li>
+</ul>
+
+<hr />
+
+<h3><font color="0D4781">Google Play Reviews</font></h3>
+<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
+    Google provides some or all of the following information to the developer.
+    <strong>Stoutner may use this information for any purpose</strong>.</p>
+<ul>
+    <li><strong>Version code</strong> (eg. 7)</li>
+    <li><strong>Version name</strong> (eg. 1.6)</li>
+    <li><strong>Android version</strong> (eg. Android 5.1)</li>
+    <li><strong>Device</strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
+    <li><strong>Manufacturer</strong> (eg. Samsung)</li>
+    <li><strong>Device type</strong> (eg. Phone)</li>
+    <li><strong>CPU make</strong> (eg. Samsung)</li>
+    <li><strong>CPU model</strong> (eg. Exynos 7420)</li>
+    <li><strong>Screen density</strong> (eg. 560 dpi)</li>
+    <li><strong>Screen size</strong> (eg. 2560 x 1440)</li>
+    <li><strong>RAM</strong> (eg. 4096 MB)</li>
+    <li><strong>Native platform</strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+    <li><strong>OpenGL ES version</strong> (eg. 3.1)</li>
+    <li><strong>Device language</strong> (eg. English)</li>
+</ul>
+
+<hr />
+<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+</body>
+</html>
\ No newline at end of file
index c5d7bf779cf87d8607a41a12f2c8e4113c6b9f11..2e019f599e646b445461e5bbe16bb43ef26b6b3f 100644 (file)
@@ -52,11 +52,11 @@ public class AboutActivity extends AppCompatActivity {
         @Override
         // Get the count of the number of tabs.
         public int getCount() {
-            return 5;
+            return 6;
         }
 
         @Override
-        // Get the name of each tab.
+        // Get the name of each tab.  Tab numbers start at 0.
         public CharSequence getPageTitle(int tab) {
             switch (tab) {
                 case 0:
@@ -66,12 +66,15 @@ public class AboutActivity extends AppCompatActivity {
                     return getString(R.string.permissions);
 
                 case 2:
-                    return getString(R.string.changelog);
+                    return getString(R.string.privacy_policy);
 
                 case 3:
-                    return getString(R.string.license);
+                    return getString(R.string.changelog);
 
                 case 4:
+                    return getString(R.string.license);
+
+                case 5:
                     return getString(R.string.contributors);
 
                 default:
index eda3e30a4dbffb5ac42ce139b271716971e054d1..c82af274023e3eb78872492fe5aa0fce032ae9f1 100644 (file)
@@ -52,7 +52,7 @@ public class AboutTabFragment extends Fragment {
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View tabLayout;
 
-        // Load the about tab layout.
+        // Load the about tab layout.  Tab numbers start at 0.
         if (tabNumber == 0) {
             // Setting false at the end of inflater.inflate does not attach the inflated layout as a child of container.
             // The fragment will take care of attaching the root automatically.
@@ -130,7 +130,7 @@ public class AboutTabFragment extends Fragment {
             // Select the substring that begins after "Chrome/" and goes until the next " ".
             String chromeVersion = userAgentString.substring(userAgentString.indexOf("Chrome/") + 7, userAgentString.indexOf(" ", userAgentString.indexOf("Chrome/")));
             versionChromeText.setText(chromeVersion);
-        } else { // load a WebView for all the other tabs.
+        } else { // load a WebView for all the other tabs.  Tab numbers start at 0.
             // Setting false at the end of inflater.inflate does not attach the inflated layout as a child of container.
             // The fragment will take care of attaching the root automatically.
             tabLayout = inflater.inflate(R.layout.about_tab_webview, container, false);
@@ -142,14 +142,18 @@ public class AboutTabFragment extends Fragment {
                     break;
 
                 case 2:
-                    tabWebView.loadUrl("file:///android_asset/about_changelog.html");
+                    tabWebView.loadUrl("file:///android_asset/about_privacy_policy.html");
                     break;
 
                 case 3:
-                    tabWebView.loadUrl("file:///android_asset/about_license.html");
+                    tabWebView.loadUrl("file:///android_asset/about_changelog.html");
                     break;
 
                 case 4:
+                    tabWebView.loadUrl("file:///android_asset/about_license.html");
+                    break;
+
+                case 5:
                     tabWebView.loadUrl("file:///android_asset/about_contributors.html");
                     break;
 
index 6ccc4270f045eb9eb2e8e84ca0943394706759f8..134ee100b0c8b1553efbc6db67f4e67be9e637aa 100644 (file)
             <string name="webkit">WebKit:\u00A0</string>
             <string name="chrome">Chrome:\u00A0</string>
     <string name="permissions">Permissions</string>
+    <string name="privacy_policy">Privacy Policy</string>
     <string name="changelog">Changelog</string>
     <string name="license">License</string>
     <string name="contributors">Contributors</string>