mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-28 15:32:44 +00:00
67 lines
2.4 KiB
Java
67 lines
2.4 KiB
Java
package com.limelight.utils;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.pm.PackageManager;
|
|
import android.content.pm.ResolveInfo;
|
|
import android.net.Uri;
|
|
|
|
import com.limelight.HelpActivity;
|
|
|
|
public class HelpLauncher {
|
|
|
|
private static boolean isKnownBrowser(Context context, Intent i) {
|
|
ResolveInfo resolvedActivity = context.getPackageManager().resolveActivity(i, PackageManager.MATCH_DEFAULT_ONLY);
|
|
if (resolvedActivity == null) {
|
|
// No browser
|
|
return false;
|
|
}
|
|
|
|
String name = resolvedActivity.activityInfo.name;
|
|
if (name == null) {
|
|
return false;
|
|
}
|
|
|
|
name = name.toLowerCase();
|
|
return name.contains("chrome") || name.contains("firefox");
|
|
}
|
|
|
|
private static void launchUrl(Context context, String url) {
|
|
// Try to launch the default browser
|
|
try {
|
|
Intent i = new Intent(Intent.ACTION_VIEW);
|
|
i.setData(Uri.parse(url));
|
|
|
|
// Several Android TV devices will lie and say they do have a browser
|
|
// even though the OS just shows an error dialog if we try to use it. We need to
|
|
// be a bit more clever on these devices and detect if the browser is a legitimate
|
|
// browser or just a fake error message activity.
|
|
if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK) ||
|
|
isKnownBrowser(context, i)) {
|
|
context.startActivity(i);
|
|
return;
|
|
}
|
|
} catch (Exception e) {
|
|
// This is only supposed to throw ActivityNotFoundException but
|
|
// it can (at least) also throw SecurityException if a user's default
|
|
// browser is not exported. We'll catch everything to workaround this.
|
|
|
|
// Fall through
|
|
}
|
|
|
|
// This platform has no browser (possibly a leanback device)
|
|
// We'll launch our WebView activity
|
|
Intent i = new Intent(context, HelpActivity.class);
|
|
i.setData(Uri.parse(url));
|
|
context.startActivity(i);
|
|
}
|
|
|
|
public static void launchSetupGuide(Context context) {
|
|
launchUrl(context, "https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide");
|
|
}
|
|
|
|
public static void launchTroubleshooting(Context context) {
|
|
launchUrl(context, "https://github.com/moonlight-stream/moonlight-docs/wiki/Troubleshooting");
|
|
}
|
|
}
|