Add support for `tel:` links. https://redmine.stoutner.com/issues/226
authorSoren Stoutner <soren@stoutner.com>
Mon, 20 Nov 2017 22:17:45 +0000 (15:17 -0700)
committerSoren Stoutner <soren@stoutner.com>
Mon, 20 Nov 2017 22:17:45 +0000 (15:17 -0700)
app/build.gradle
app/src/main/assets/de/about_changelog_dark.html
app/src/main/assets/de/about_changelog_light.html
app/src/main/assets/en/about_changelog_dark.html
app/src/main/assets/en/about_changelog_light.html
app/src/main/assets/es/about_changelog_dark.html
app/src/main/assets/es/about_changelog_light.html
app/src/main/assets/it/about_changelog_dark.html
app/src/main/assets/it/about_changelog_light.html
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
build.gradle

index 50c0c2c..ad44a2b 100644 (file)
@@ -67,7 +67,7 @@ dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:design:26.1.0'
     // Only compile `com.google.firebase:firebase-ads:9.8.0` for the free flavor.
     implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:design:26.1.0'
     // Only compile `com.google.firebase:firebase-ads:9.8.0` for the free flavor.
-    freeImplementation 'com.google.firebase:firebase-ads:11.4.2'
+    freeImplementation 'com.google.firebase:firebase-ads:11.6.0'
 }
 
 // Google's documentation says the following line is required for `firebase-ads` but things work correctly without it.  I have no interest in applying the Google Mobile Services plugin in the standard flavor if I don't have to.
 }
 
 // Google's documentation says the following line is required for `firebase-ads` but things work correctly without it.  I have no interest in applying the Google Mobile Services plugin in the standard flavor if I don't have to.
index 67926e5..3c19e76 100644 (file)
@@ -30,7 +30,7 @@
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
-        <p>9. November 2017 - minimum API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9. November 2017</a> - minimum API 19, target API 26</p>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
index ca43844..4b474a3 100644 (file)
@@ -30,7 +30,7 @@
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
-        <p>9. November 2017 - minimum API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9. November 2017</a> - minimum API 19, target API 26</p>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
index f994a3b..c7078a1 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
-        <p>9 November 2017 - minimum API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 November 2017</a> - minimum API 19, target API 26</p>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
index 6877439..ac7c1f5 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
 
     <body>
         <h3>2.7.1 (version code 28)</h3>
-        <p>9 November 2017 - minimum API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 November 2017</a> - minimum API 19, target API 26</p>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
         <ul>
             <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/225">editing a bookmark</a> in the new bookmarks drawer.</li>
         </ul>
index 6c7e8df..c5fd9de 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.7.1 (código de versión 28)</h3>
 
     <body>
         <h3>2.7.1 (código de versión 28)</h3>
-        <p>9 de noviembre de 2017 - API mínimo 19, API dirigido 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 de noviembre de 2017</a> - API mínimo 19, API dirigido 26</p>
         <ul>
             <li>Corrregir un fallo al <a href="https://redmine.stoutner.com/issues/225">editar un favorito</a> en el nuevo cajón de favoritos.</li>
         </ul>
         <ul>
             <li>Corrregir un fallo al <a href="https://redmine.stoutner.com/issues/225">editar un favorito</a> en el nuevo cajón de favoritos.</li>
         </ul>
index 5abd0a8..254d64f 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.7.1 (código de versión 28)</h3>
 
     <body>
         <h3>2.7.1 (código de versión 28)</h3>
-        <p>9 de noviembre de 2017 - API mínimo 19, API dirigido 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 de noviembre de 2017</a> - API mínimo 19, API dirigido 26</p>
         <ul>
             <li>Corrregir un fallo al <a href="https://redmine.stoutner.com/issues/225">editar un favorito</a> en el nuevo cajón de favoritos.</li>
         </ul>
         <ul>
             <li>Corrregir un fallo al <a href="https://redmine.stoutner.com/issues/225">editar un favorito</a> en el nuevo cajón de favoritos.</li>
         </ul>
index c9e592a..b55c002 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.7.1 (versione codice 28)</h3>
 
     <body>
         <h3>2.7.1 (versione codice 28)</h3>
-        <p>9 Novembre 2017 - minima API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 Novembre 2017</a> - minima API 19, target API 26</p>
         <ul>
             <li>Eliminato un crash che si verificava nel caso di <a href="https://redmine.stoutner.com/issues/225">editing dei segnalibri</a> dal nuovo cassetto dei segnalibri.</li>
         </ul>
         <ul>
             <li>Eliminato un crash che si verificava nel caso di <a href="https://redmine.stoutner.com/issues/225">editing dei segnalibri</a> dal nuovo cassetto dei segnalibri.</li>
         </ul>
index bbae4cd..ee963d5 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.7.1 (versione codice 28)</h3>
 
     <body>
         <h3>2.7.1 (versione codice 28)</h3>
-        <p>9 Novembre 2017 - minima API 19, target API 26</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 Novembre 2017</a> - minima API 19, target API 26</p>
         <ul>
             <li>Eliminato un crash che si verificava nel caso di <a href="https://redmine.stoutner.com/issues/225">editing dei segnalibri</a> dal nuovo cassetto dei segnalibri.</li>
         </ul>
         <ul>
             <li>Eliminato un crash che si verificava nel caso di <a href="https://redmine.stoutner.com/issues/225">editing dei segnalibri</a> dal nuovo cassetto dei segnalibri.</li>
         </ul>
index c6f04a0..29332eb 100644 (file)
@@ -812,8 +812,8 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             @SuppressWarnings("deprecation")
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
             @SuppressWarnings("deprecation")
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
-                if (url.startsWith("mailto:")) {  // Load the URL in an external email program because it begins with `mailto:`.
-                    // We use `ACTION_SENDTO` instead of `ACTION_SEND` so that only email programs are launched.
+                if (url.startsWith("mailto:")) {  // Load the email address in an external email program.
+                    // Use `ACTION_SENDTO` instead of `ACTION_SEND` so that only email programs are launched.
                     Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
 
                     // Parse the url and set it as the data for the `Intent`.
                     Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
 
                     // Parse the url and set it as the data for the `Intent`.
@@ -825,6 +825,21 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                     // Make it so.
                     startActivity(emailIntent);
 
                     // Make it so.
                     startActivity(emailIntent);
 
+                    // Returning `true` indicates the application is handling the URL.
+                    return true;
+                } else if (url.startsWith("tel:")) {  // Load the phone number in the dialer.
+                    // `ACTION_DIAL` open the dialer and loads the phone number, but waits for the user to place the call.
+                    Intent dialIntent = new Intent(Intent.ACTION_DIAL);
+
+                    // Add the phone number to the intent.
+                    dialIntent.setData(Uri.parse(url));
+
+                    // `FLAG_ACTIVITY_NEW_TASK` opens the dialer in a new task instead as part of Privacy Browser.
+                    dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+                    // Make it so.
+                    startActivity(dialIntent);
+
                     // Returning `true` indicates the application is handling the URL.
                     return true;
                 } else {  // Load the URL in Privacy Browser.
                     // Returning `true` indicates the application is handling the URL.
                     return true;
                 } else {  // Load the URL in Privacy Browser.
index 5aa4870..f903bec 100644 (file)
@@ -1,11 +1,34 @@
+/*
+ * Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+ *
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ *
+ * Privacy Browser is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Privacy Browser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
     repositories {
         jcenter()
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
     repositories {
         jcenter()
+        maven {
+            url 'https://maven.google.com/'
+            name 'Google'
+        }
     }
     dependencies {
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.0'
+        classpath 'com.android.tools.build:gradle:3.0.1'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
@@ -15,6 +38,9 @@ buildscript {
 allprojects {
     repositories {
         jcenter()
 allprojects {
     repositories {
         jcenter()
-        google()
+        maven {
+            url 'https://maven.google.com/'
+            name 'Google'
+        }
     }
 }
     }
 }