diff options
Diffstat (limited to '')
-rw-r--r-- | app/src/main/java/ml/docilealligator/infinityforreddit/LinkResolverActivity.java | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/LinkResolverActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/LinkResolverActivity.java index 76ef9ffd..8c5cde11 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/LinkResolverActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/LinkResolverActivity.java @@ -1,5 +1,6 @@ package ml.docilealligator.infinityforreddit; +import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -152,28 +153,13 @@ public class LinkResolverActivity extends AppCompatActivity { if(uri.getScheme() == null) { uri = Uri.parse("http://" + uri.toString()); } - customTabsIntent.launchUrl(this, uri); - } else { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setData(uri); - - List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); - ArrayList<String> packageNames = new ArrayList<>(); - - String currentPackageName = getApplicationContext().getPackageName(); - - for(ResolveInfo info : activities) { - if(!info.activityInfo.packageName.equals(currentPackageName)) { - packageNames.add(info.activityInfo.packageName); - } - } - - if(!packageNames.isEmpty()) { - intent.setPackage(packageNames.get(0)); - startActivity(intent); - } else { - Toast.makeText(this, R.string.no_browser_found, Toast.LENGTH_SHORT).show(); + try { + customTabsIntent.launchUrl(this, uri); + } catch (ActivityNotFoundException e) { + openInBrowser(uri, pm); } + } else { + openInBrowser(uri, pm); } } @@ -196,6 +182,29 @@ public class LinkResolverActivity extends AppCompatActivity { return packagesSupportingCustomTabs; } + private void openInBrowser(Uri uri, PackageManager pm) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(uri); + + List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); + ArrayList<String> packageNames = new ArrayList<>(); + + String currentPackageName = getApplicationContext().getPackageName(); + + for(ResolveInfo info : activities) { + if(!info.activityInfo.packageName.equals(currentPackageName)) { + packageNames.add(info.activityInfo.packageName); + } + } + + if(!packageNames.isEmpty()) { + intent.setPackage(packageNames.get(0)); + startActivity(intent); + } else { + Toast.makeText(this, R.string.no_browser_found, Toast.LENGTH_SHORT).show(); + } + } + public static Uri getRedditUriByPath(String path) { return Uri.parse("https://www.reddit.com" + path); } |