diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
index 42e886d30..4400cac53 100644
--- a/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragment.java
@@ -1,22 +1,15 @@
package org.schabi.newpipe.about;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
-import android.support.v7.app.AlertDialog;
import android.view.*;
-import android.webkit.WebView;
import android.widget.TextView;
-
import org.schabi.newpipe.R;
-import org.schabi.newpipe.util.ThemeHelper;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
@@ -46,70 +39,7 @@ public class LicenseFragment extends Fragment {
* @param license the license to show
*/
public static void showLicense(Context context, License license) {
- if(context == null) {
- throw new NullPointerException("context is null");
- }
- if(license == null) {
- throw new NullPointerException("license is null");
- }
- AlertDialog.Builder alert = new AlertDialog.Builder(context);
- alert.setTitle(license.getName());
-
- WebView wv = new WebView(context);
- String licenseContent = "";
- String webViewData;
- try {
- BufferedReader in = new BufferedReader(new InputStreamReader(context.getAssets().open(license.getFilename()), "UTF-8"));
- String str;
- while ((str = in.readLine()) != null) {
- licenseContent += str;
- }
- in.close();
-
- // split the HTML file and insert the stylesheet into the HEAD of the file
- String[] insert = licenseContent.split("");
- webViewData = insert[0] + ""
- + insert[1];
- } catch (Exception e) {
- throw new NullPointerException("could not get license file:" + getLicenseStylesheet(context));
- }
- wv.loadData(webViewData, "text/html", "utf-8");
-
- alert.setView(wv);
- alert.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- alert.show();
- }
-
- public static String getLicenseStylesheet(Context context) {
- return "body{padding:12px 15px;margin:0;background:#"
- + getHexRGBColor(context,(ThemeHelper.isLightThemeSelected(context))
- ? R.color.light_license_background_color
- : R.color.dark_license_background_color)
- + ";color:#"
- + getHexRGBColor(context,(ThemeHelper.isLightThemeSelected(context))
- ? R.color.light_license_text_color
- : R.color.dark_license_text_color) + ";}"
- + "a[href]{color:#"
- + getHexRGBColor(context,(ThemeHelper.isLightThemeSelected(context))
- ? R.color.light_youtube_primary_color
- : R.color.dark_youtube_primary_color) + ";}"
- + "pre{white-space: pre-wrap;}";
- }
-
- /**
- * Cast R.color to a hexadecimal color value
- * @param context the context to use
- * @param color the color number from R.color
- * @return a six characters long String with hexadecimal RGB values
- */
- public static String getHexRGBColor(Context context, int color) {
- return context.getResources().getString(color).substring(3);
+ new LicenseFragmentHelper().execute(context, license);
}
@Override
@@ -154,7 +84,6 @@ public class LicenseFragment extends Fragment {
});
softwareComponentsView.addView(componentView);
registerForContextMenu(componentView);
-
}
return rootView;
}
diff --git a/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.java b/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.java
new file mode 100644
index 000000000..726e97ec2
--- /dev/null
+++ b/app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.java
@@ -0,0 +1,111 @@
+package org.schabi.newpipe.about;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.AsyncTask;
+import android.support.v7.app.AlertDialog;
+import android.webkit.WebView;
+import org.schabi.newpipe.R;
+import org.schabi.newpipe.util.ThemeHelper;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+public class LicenseFragmentHelper extends AsyncTask