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