diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java index 58a06089d..69c846dbc 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/InternalUrlsHandler.java @@ -2,6 +2,8 @@ package org.schabi.newpipe.util.external_communication; import android.content.Context; +import androidx.annotation.NonNull; + import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.exceptions.ExtractionException; @@ -44,9 +46,10 @@ public final class InternalUrlsHandler { * @param url the URL to check if it can be handled * @return true if the URL can be handled by NewPipe, false if it cannot */ - public static boolean handleUrlCommentsTimestamp(final CompositeDisposable disposables, + public static boolean handleUrlCommentsTimestamp(@NonNull final CompositeDisposable + disposables, final Context context, - final String url) { + @NonNull final String url) { return handleUrl(disposables, context, url, HASHTAG_TIMESTAMP_PATTERN); } @@ -63,9 +66,10 @@ public final class InternalUrlsHandler { * @param url the URL to check if it can be handled * @return true if the URL can be handled by NewPipe, false if it cannot */ - public static boolean handleUrlDescriptionTimestamp(final CompositeDisposable disposables, + public static boolean handleUrlDescriptionTimestamp(@NonNull final CompositeDisposable + disposables, final Context context, - final String url) { + @NonNull final String url) { return handleUrl(disposables, context, url, AMPERSAND_TIMESTAMP_PATTERN); } @@ -82,10 +86,10 @@ public final class InternalUrlsHandler { * @param pattern the pattern to use * @return true if the URL can be handled by NewPipe, false if it cannot */ - private static boolean handleUrl(final CompositeDisposable disposables, + private static boolean handleUrl(@NonNull final CompositeDisposable disposables, final Context context, - final String url, - final Pattern pattern) { + @NonNull final String url, + @NonNull final Pattern pattern) { final String matchedUrl; final StreamingService service; final StreamingService.LinkType linkType; @@ -128,10 +132,10 @@ public final class InternalUrlsHandler { * @param seconds the position in seconds at which the floating player will start * @return true if the playback of the content has successfully started or false if not */ - public static boolean playOnPopup(final CompositeDisposable disposables, + public static boolean playOnPopup(@NonNull final CompositeDisposable disposables, final Context context, final String url, - final StreamingService service, + @NonNull final StreamingService service, final int seconds) { final LinkHandlerFactory factory = service.getStreamLHFactory(); final String cleanUrl; diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/KoreUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/KoreUtils.java index 5844a0c6c..6801f24ef 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/KoreUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/KoreUtils.java @@ -2,6 +2,7 @@ package org.schabi.newpipe.util.external_communication; import android.content.Context; +import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.preference.PreferenceManager; @@ -17,13 +18,14 @@ public final class KoreUtils { || serviceId == ServiceList.SoundCloud.getServiceId()); } - public static boolean shouldShowPlayWithKodi(final Context context, final int serviceId) { + public static boolean shouldShowPlayWithKodi(@NonNull final Context context, + final int serviceId) { return isServiceSupportedByKore(serviceId) && PreferenceManager.getDefaultSharedPreferences(context) .getBoolean(context.getString(R.string.show_play_with_kodi_key), false); } - public static void showInstallKoreDialog(final Context context) { + public static void showInstallKoreDialog(@NonNull final Context context) { final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(R.string.kore_not_found) .setPositiveButton(R.string.install, (dialog, which) -> diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java index b9f96746f..e49cd6ea2 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java @@ -11,6 +11,7 @@ import android.net.Uri; import android.os.Build; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import org.schabi.newpipe.R; @@ -33,7 +34,7 @@ public final class ShareUtils { * @param context the context to use * @param packageId the package id of the app to be installed */ - public static void installApp(final Context context, final String packageId) { + public static void installApp(@NonNull final Context context, final String packageId) { // Try market scheme final boolean marketSchemeResult = openIntentInApp(context, new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageId)) @@ -57,7 +58,7 @@ public final class ShareUtils { * for HTTP protocol or for the created intent * @return true if the URL can be opened or false if it cannot */ - public static boolean openUrlInBrowser(final Context context, + public static boolean openUrlInBrowser(@NonNull final Context context, final String url, final boolean httpDefaultBrowserTest) { final String defaultPackageName; @@ -107,7 +108,7 @@ public final class ShareUtils { * @param url the url to browse * @return true if the URL can be opened or false if it cannot be **/ - public static boolean openUrlInBrowser(final Context context, final String url) { + public static boolean openUrlInBrowser(@NonNull final Context context, final String url) { return openUrlInBrowser(context, url, true); } @@ -126,8 +127,8 @@ public final class ShareUtils { * to open the intent (true) or not (false) * @return true if the intent can be opened or false if it cannot be */ - public static boolean openIntentInApp(final Context context, - final Intent intent, + public static boolean openIntentInApp(@NonNull final Context context, + @NonNull final Intent intent, final boolean showToast) { final String defaultPackageName = getDefaultAppPackageName(context, intent); @@ -159,8 +160,8 @@ public final class ShareUtils { * @param intent the intent to open * @param setTitleChooser set the title "Open with" to the chooser if true, else not */ - private static void openAppChooser(final Context context, - final Intent intent, + private static void openAppChooser(@NonNull final Context context, + @NonNull final Intent intent, final boolean setTitleChooser) { final Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); chooserIntent.putExtra(Intent.EXTRA_INTENT, intent); @@ -214,7 +215,8 @@ public final class ShareUtils { * @return the package name of the default app, an empty string if there's no app installed to * handle the intent or the app chooser if there's no default */ - private static String getDefaultAppPackageName(final Context context, final Intent intent) { + private static String getDefaultAppPackageName(@NonNull final Context context, + @NonNull final Intent intent) { final ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); @@ -237,8 +239,8 @@ public final class ShareUtils { * @param content the content to share * @param imagePreviewUrl the image of the subject */ - public static void shareText(final Context context, - final String title, + public static void shareText(@NonNull final Context context, + @NonNull final String title, final String content, final String imagePreviewUrl) { final Intent shareIntent = new Intent(Intent.ACTION_SEND); @@ -272,7 +274,9 @@ public final class ShareUtils { * @param title the title of the content * @param content the content to share */ - public static void shareText(final Context context, final String title, final String content) { + public static void shareText(@NonNull final Context context, + @NonNull final String title, + final String content) { shareText(context, title, content, ""); } @@ -283,7 +287,7 @@ public final class ShareUtils { * @param context the context to use * @param text the text to copy */ - public static void copyToClipboard(final Context context, final String text) { + public static void copyToClipboard(@NonNull final Context context, final String text) { final ClipboardManager clipboardManager = ContextCompat.getSystemService(context, ClipboardManager.class); diff --git a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java b/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java index 6c5cfb499..d9d9875ab 100644 --- a/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java +++ b/app/src/main/java/org/schabi/newpipe/util/external_communication/TextLinkifier.java @@ -55,6 +55,7 @@ public final class TextLinkifier { * will be called * @return a disposable to be stored somewhere and disposed when activity/fragment is destroyed */ + @NonNull public static Disposable createLinksFromHtmlBlock(final Context context, final String htmlBlock, final TextView textView, @@ -82,9 +83,10 @@ public final class TextLinkifier { * @param contentUrl the URL of the content * @return a disposable to be stored somewhere and disposed when activity/fragment is destroyed */ + @NonNull public static Disposable createLinksFromPlainText(final Context context, final String plainTextBlock, - final TextView textView, + @NonNull final TextView textView, final StreamingService streamingService, final String contentUrl) { textView.setAutoLinkMask(Linkify.WEB_URLS); @@ -109,6 +111,7 @@ public final class TextLinkifier { * @param contentUrl the URL of the content * @return a disposable to be stored somewhere and disposed when activity/fragment is destroyed */ + @NonNull public static Disposable createLinksFromMarkdownText(final Context context, final String markdownBlock, final TextView textView, @@ -134,7 +137,7 @@ public final class TextLinkifier { * @param streamingService the {@link StreamingService} of the content */ private static void addClickListenersOnHashtags(final Context context, - final SpannableStringBuilder + @NonNull final SpannableStringBuilder spannableDescription, final StreamingService streamingService) { final String descriptionText = spannableDescription.toString(); @@ -174,7 +177,7 @@ public final class TextLinkifier { * @param streamingService the {@link StreamingService} of the content */ private static void addClickListenersOnTimestamps(final Context context, - final SpannableStringBuilder + @NonNull final SpannableStringBuilder spannableDescription, final String contentUrl, final StreamingService streamingService) { @@ -232,6 +235,7 @@ public final class TextLinkifier { * @param contentUrl the URL of the content * @return a disposable to be stored somewhere and disposed when activity/fragment is destroyed */ + @NonNull private static Disposable changeIntentsOfDescriptionLinks(final Context context, final CharSequence chars, final TextView textView, @@ -279,7 +283,7 @@ public final class TextLinkifier { }); } - private static void setTextViewCharSequence(final TextView textView, + private static void setTextViewCharSequence(@NonNull final TextView textView, final CharSequence charSequence) { textView.setText(charSequence); textView.setMovementMethod(LinkMovementMethod.getInstance());