Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/130608

Change subject: Bounce Special pages to external browser.
......................................................................

Bounce Special pages to external browser.

Change-Id: I4372b73bbeb51187f96038ca66407dc21cf4e62e
---
M wikipedia/src/main/java/org/wikipedia/Utils.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/search/SearchArticlesTask.java
3 files changed, 45 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/08/130608/1

diff --git a/wikipedia/src/main/java/org/wikipedia/Utils.java 
b/wikipedia/src/main/java/org/wikipedia/Utils.java
index 56144ee..8a99f69 100644
--- a/wikipedia/src/main/java/org/wikipedia/Utils.java
+++ b/wikipedia/src/main/java/org/wikipedia/Utils.java
@@ -2,6 +2,8 @@
 
 import android.app.*;
 import android.content.*;
+import android.content.pm.*;
+import android.net.Uri;
 import android.os.*;
 import android.text.*;
 import android.text.format.*;
@@ -398,4 +400,42 @@
     public static String getDBNameForSite(Site site) {
         return site.getLanguage() + "wiki";
     }
+
+    /**
+     * Open the specified URI in an external browser (even if our app's intent 
filter
+     * matches the given URI)
+     *
+     * @param context Context of the calling app
+     * @param uri URI to open in an external browser
+     */
+    public static void visitInExternalBrowser(final Context context, Uri uri){
+        Intent intent = new Intent();
+        intent.setAction(Intent.ACTION_VIEW);
+        intent.setData(uri);
+        List<ResolveInfo> resInfo = 
context.getPackageManager().queryIntentActivities(intent, 0);
+        if (!resInfo.isEmpty()){
+            List<Intent> browserIntents = new ArrayList<Intent>();
+            for (ResolveInfo resolveInfo : resInfo) {
+                String packageName = resolveInfo.activityInfo.packageName;
+                // remove our app from the selection!
+                if(packageName.equals(context.getPackageName()))
+                    continue;
+                Intent newIntent = new Intent(Intent.ACTION_VIEW);
+                newIntent.setData(uri);
+                newIntent.setPackage(packageName);
+                browserIntents.add(newIntent);
+            }
+            if (browserIntents.size() > 0) {
+                // initialize the chooser intent with one of the 
browserIntents, and remove that
+                // intent from the list, since the chooser already has it, and 
we don't need to
+                // add it again in putExtra. (initialize with the last item in 
the list, to preserve order)
+                Intent chooserIntent = 
Intent.createChooser(browserIntents.remove(browserIntents.size() - 1), null);
+                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
browserIntents.toArray(new Parcelable[]{}));
+                context.startActivity(chooserIntent);
+                return;
+            }
+        }
+        context.startActivity(intent);
+    }
+
 }
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 503a1dc..06d472a 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -87,6 +87,10 @@
     }
 
     private void displayNewPage(PageTitle title, HistoryEntry entry) {
+        if(title.isSpecial()) {
+            Utils.visitInExternalBrowser(this, 
Uri.parse(title.getCanonicalUri()));
+            return;
+        }
         PageViewFragment pageFragment = new PageViewFragment(title, entry, 
R.id.search_fragment);
         getSupportFragmentManager().beginTransaction()
                 .setCustomAnimations(R.anim.slide_in_right, 
R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesTask.java 
b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesTask.java
index f224811..4544429 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesTask.java
@@ -31,7 +31,7 @@
 
         ArrayList<PageTitle> pageTitles = new ArrayList<PageTitle>();
         for (int i = 0; i < searchResults.length(); i++) {
-            pageTitles.add(new PageTitle(null, searchResults.optString(i), 
site));
+            pageTitles.add(new PageTitle(searchResults.optString(i), site));
         }
 
         if (WikipediaApp.isWikipediaZeroDevmodeOn()) {

-- 
To view, visit https://gerrit.wikimedia.org/r/130608
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4372b73bbeb51187f96038ca66407dc21cf4e62e
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <dbr...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to