linkify web URLs in description in App Details

fdroid-website#510
fdroid-website#167
fdroidserver#845
fdroiddata@d6c5315a
jekyll-fdroid!60
This commit is contained in:
Hans-Christoph Steiner 2020-11-18 23:19:43 +01:00
parent f4ae1aacc7
commit 7248375a3a
No known key found for this signature in database
GPG Key ID: 3E177817BA1B9BFA

View File

@ -17,6 +17,7 @@ import android.text.TextUtils;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan; import android.text.style.URLSpan;
import android.text.util.Linkify;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -29,7 +30,6 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.DrawableRes; import androidx.annotation.DrawableRes;
import androidx.annotation.LayoutRes; import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -40,13 +40,13 @@ import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.os.ConfigurationCompat; import androidx.core.os.ConfigurationCompat;
import androidx.core.os.LocaleListCompat; import androidx.core.os.LocaleListCompat;
import androidx.core.text.HtmlCompat; import androidx.core.text.HtmlCompat;
import androidx.core.text.util.LinkifyCompat;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.widget.TextViewCompat; import androidx.core.widget.TextViewCompat;
import androidx.gridlayout.widget.GridLayout; import androidx.gridlayout.widget.GridLayout;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller; import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
@ -71,6 +71,7 @@ import java.util.Locale;
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class AppDetailsRecyclerViewAdapter public class AppDetailsRecyclerViewAdapter
extends RecyclerView.Adapter<RecyclerView.ViewHolder> { extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final String TAG = "AppDetailsRecyclerViewA";
public interface AppDetailsRecyclerViewAdapterCallbacks { public interface AppDetailsRecyclerViewAdapterCallbacks {
@ -533,6 +534,8 @@ public class AppDetailsRecyclerViewAdapter
null, new Utils.HtmlTagHandler()); null, new Utils.HtmlTagHandler());
descriptionView.setMovementMethod(LinkMovementMethod.getInstance()); descriptionView.setMovementMethod(LinkMovementMethod.getInstance());
descriptionView.setText(trimTrailingNewlines(desc)); descriptionView.setText(trimTrailingNewlines(desc));
LinkifyCompat.addLinks(descriptionView, Linkify.WEB_URLS);
if (descriptionView.getText() instanceof Spannable) { if (descriptionView.getText() instanceof Spannable) {
Spannable spannable = (Spannable) descriptionView.getText(); Spannable spannable = (Spannable) descriptionView.getText();
URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class); URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class);