diff --git a/app/build.gradle b/app/build.gradle index 4050e116cb9..9867037e6a9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,15 +14,12 @@ android { defaultConfig { applicationId "org.schabi.newpipe" resValue "string", "app_name", "NewPipe" - minSdk 19 + minSdk 21 targetSdk 29 versionCode 987 versionName "0.23.1" - multiDexEnabled true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables.useSupportLibrary = true javaCompileOptions { annotationProcessorOptions { @@ -210,7 +207,6 @@ dependencies { implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}" implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' implementation 'androidx.media:media:1.5.0' - implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.preference:preference:1.2.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation "androidx.room:room-runtime:${androidxRoomVersion}" @@ -220,7 +216,6 @@ dependencies { // Newer version specified to prevent accessibility regressions with RecyclerView, see: // https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01 implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' - implementation 'androidx.webkit:webkit:1.4.0' implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}" implementation "androidx.work:work-rxjava3:${androidxWorkVersion}" implementation 'com.google.android.material:material:1.5.0' diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java index 70c9474786a..c63f07891bd 100644 --- a/app/src/main/java/org/schabi/newpipe/App.java +++ b/app/src/main/java/org/schabi/newpipe/App.java @@ -1,5 +1,6 @@ package org.schabi.newpipe; +import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; @@ -7,7 +8,6 @@ import androidx.annotation.NonNull; import androidx.core.app.NotificationChannelCompat; import androidx.core.app.NotificationManagerCompat; -import androidx.multidex.MultiDexApplication; import androidx.preference.PreferenceManager; import com.jakewharton.processphoenix.ProcessPhoenix; @@ -56,7 +56,7 @@ * along with NewPipe. If not, see . */ -public class App extends MultiDexApplication { +public class App extends Application { public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID; private static final String TAG = App.class.toString(); private static App app; diff --git a/app/src/main/java/org/schabi/newpipe/DownloaderImpl.java b/app/src/main/java/org/schabi/newpipe/DownloaderImpl.java index 1a3a8adee11..f2803dc2fb1 100644 --- a/app/src/main/java/org/schabi/newpipe/DownloaderImpl.java +++ b/app/src/main/java/org/schabi/newpipe/DownloaderImpl.java @@ -1,7 +1,6 @@ package org.schabi.newpipe; import android.content.Context; -import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -14,33 +13,18 @@ import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.util.CookieUtils; import org.schabi.newpipe.util.InfoCache; -import org.schabi.newpipe.util.TLSSocketFactoryCompat; import java.io.IOException; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509TrustManager; - -import okhttp3.CipherSuite; -import okhttp3.ConnectionSpec; import okhttp3.OkHttpClient; import okhttp3.RequestBody; import okhttp3.ResponseBody; -import static org.schabi.newpipe.MainActivity.DEBUG; - public final class DownloaderImpl extends Downloader { public static final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"; @@ -54,9 +38,6 @@ public final class DownloaderImpl extends Downloader { private final OkHttpClient client; private DownloaderImpl(final OkHttpClient.Builder builder) { - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { - enableModernTLS(builder); - } this.client = builder .readTimeout(30, TimeUnit.SECONDS) // .cache(new Cache(new File(context.getExternalCacheDir(), "okhttp"), @@ -81,55 +62,6 @@ public static DownloaderImpl getInstance() { return instance; } - /** - * Enable TLS 1.2 and 1.1 on Android Kitkat. This function is mostly taken - * from the documentation of OkHttpClient.Builder.sslSocketFactory(_,_). - *

- * If there is an error, the function will safely fall back to doing nothing - * and printing the error to the console. - *

- * - * @param builder The HTTPClient Builder on which TLS is enabled on (will be modified in-place) - */ - private static void enableModernTLS(final OkHttpClient.Builder builder) { - try { - // get the default TrustManager - final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance( - TrustManagerFactory.getDefaultAlgorithm()); - trustManagerFactory.init((KeyStore) null); - final TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); - if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { - throw new IllegalStateException("Unexpected default trust managers:" - + Arrays.toString(trustManagers)); - } - final X509TrustManager trustManager = (X509TrustManager) trustManagers[0]; - - // insert our own TLSSocketFactory - final SSLSocketFactory sslSocketFactory = TLSSocketFactoryCompat.getInstance(); - - builder.sslSocketFactory(sslSocketFactory, trustManager); - - // This will try to enable all modern CipherSuites(+2 more) - // that are supported on the device. - // Necessary because some servers (e.g. Framatube.org) - // don't support the old cipher suites. - // https://github.com/square/okhttp/issues/4053#issuecomment-402579554 - final List cipherSuites = - new ArrayList<>(ConnectionSpec.MODERN_TLS.cipherSuites()); - cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA); - cipherSuites.add(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA); - final ConnectionSpec legacyTLS = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) - .cipherSuites(cipherSuites.toArray(new CipherSuite[0])) - .build(); - - builder.connectionSpecs(Arrays.asList(legacyTLS, ConnectionSpec.CLEARTEXT)); - } catch (final KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) { - if (DEBUG) { - e.printStackTrace(); - } - } - } - public String getCookies(final String url) { final List resultCookies = new ArrayList<>(); if (url.contains(YOUTUBE_DOMAIN)) { diff --git a/app/src/main/java/org/schabi/newpipe/ExitActivity.java b/app/src/main/java/org/schabi/newpipe/ExitActivity.java index 8da22db2d3a..bd1351f0c1f 100644 --- a/app/src/main/java/org/schabi/newpipe/ExitActivity.java +++ b/app/src/main/java/org/schabi/newpipe/ExitActivity.java @@ -3,7 +3,6 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import org.schabi.newpipe.util.NavigationHelper; @@ -44,11 +43,7 @@ public static void exitAndRemoveFromRecentApps(final Activity activity) { protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - finishAndRemoveTask(); - } else { - finish(); - } + finishAndRemoveTask(); NavigationHelper.restartApp(this); } diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index fcb9d9725d0..dd59eeb2535 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -28,7 +28,6 @@ import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -86,7 +85,6 @@ import org.schabi.newpipe.util.SerializedCache; import org.schabi.newpipe.util.ServiceHelper; import org.schabi.newpipe.util.StateSaver; -import org.schabi.newpipe.util.TLSSocketFactoryCompat; import org.schabi.newpipe.util.ThemeHelper; import org.schabi.newpipe.views.FocusOverlayView; @@ -131,11 +129,6 @@ protected void onCreate(final Bundle savedInstanceState) { + "savedInstanceState = [" + savedInstanceState + "]"); } - // enable TLS1.1/1.2 for kitkat devices, to fix download and play for media.ccc.de sources - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { - TLSSocketFactoryCompat.setAsDefault(); - } - ThemeHelper.setDayNightMode(this); ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this)); diff --git a/app/src/main/java/org/schabi/newpipe/PanicResponderActivity.java b/app/src/main/java/org/schabi/newpipe/PanicResponderActivity.java index b4fbdfb2863..f0d1af81a66 100644 --- a/app/src/main/java/org/schabi/newpipe/PanicResponderActivity.java +++ b/app/src/main/java/org/schabi/newpipe/PanicResponderActivity.java @@ -3,7 +3,6 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; -import android.os.Build; import android.os.Bundle; /* @@ -40,10 +39,6 @@ protected void onCreate(final Bundle savedInstanceState) { ExitActivity.exitAndRemoveFromRecentApps(this); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - finishAndRemoveTask(); - } else { - finish(); - } + finishAndRemoveTask(); } } diff --git a/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt b/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt index e4dd2e16d03..86e2e1028a4 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt +++ b/app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt @@ -114,13 +114,7 @@ class ErrorUtil { context, context.getString(R.string.error_report_channel_id) ) - .setSmallIcon( - // the vector drawable icon causes crashes on KitKat devices - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - R.drawable.ic_bug_report - else - android.R.drawable.stat_notify_error - ) + .setSmallIcon(R.drawable.ic_bug_report) .setContentTitle(context.getString(R.string.error_report_notification_title)) .setContentText(context.getString(errorInfo.messageStringId)) .setAutoCancel(true) diff --git a/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java b/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java index 555dd709baa..e2780d215cb 100644 --- a/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java +++ b/app/src/main/java/org/schabi/newpipe/error/ReCaptchaActivity.java @@ -3,14 +3,15 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.webkit.CookieManager; +import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; +import android.webkit.WebViewClient; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -18,7 +19,6 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.NavUtils; import androidx.preference.PreferenceManager; -import androidx.webkit.WebViewClientCompat; import org.schabi.newpipe.databinding.ActivityRecaptchaBinding; import org.schabi.newpipe.DownloaderImpl; @@ -86,14 +86,15 @@ protected void onCreate(final Bundle savedInstanceState) { webSettings.setJavaScriptEnabled(true); webSettings.setUserAgentString(DownloaderImpl.USER_AGENT); - recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClientCompat() { + recaptchaBinding.reCaptchaWebView.setWebViewClient(new WebViewClient() { @Override - public boolean shouldOverrideUrlLoading(final WebView view, final String url) { + public boolean shouldOverrideUrlLoading(final WebView view, + final WebResourceRequest request) { if (MainActivity.DEBUG) { - Log.d(TAG, "shouldOverrideUrlLoading: url=" + url); + Log.d(TAG, "shouldOverrideUrlLoading: url=" + request.getUrl().toString()); } - handleCookiesFromUrl(url); + handleCookiesFromUrl(request.getUrl().toString()); return false; } @@ -107,12 +108,7 @@ public void onPageFinished(final WebView view, final String url) { // cleaning cache, history and cookies from webView recaptchaBinding.reCaptchaWebView.clearCache(true); recaptchaBinding.reCaptchaWebView.clearHistory(); - final CookieManager cookieManager = CookieManager.getInstance(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - cookieManager.removeAllCookies(value -> { }); - } else { - cookieManager.removeAllCookie(); - } + CookieManager.getInstance().removeAllCookies(null); recaptchaBinding.reCaptchaWebView.loadUrl(url); } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 5e19f558d74..278d472d4c6 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1922,13 +1922,7 @@ public void onFullscreenStateChanged(final boolean fullscreen) { } scrollToTop(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - addVideoPlayerView(); - } else { - // KitKat needs a delay before addVideoPlayerView call or it reports wrong height in - // activity.getWindow().getDecorView().getHeight() - new Handler().post(this::addVideoPlayerView); - } + addVideoPlayerView(); } @Override @@ -1991,10 +1985,8 @@ private void showSystemUi() { } activity.getWindow().getDecorView().setSystemUiVisibility(0); activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( - requireContext(), android.R.attr.colorPrimary)); - } + activity.getWindow().setStatusBarColor(ThemeHelper.resolveColorFromAttr( + requireContext(), android.R.attr.colorPrimary)); } private void hideSystemUi() { @@ -2025,8 +2017,7 @@ private void hideSystemUi() { } activity.getWindow().getDecorView().setSystemUiVisibility(visibility); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - && (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen()))) { + if (isInMultiWindow || (isPlayerAvailable() && player.isFullscreen())) { activity.getWindow().setStatusBarColor(Color.TRANSPARENT); activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 055c277330f..44f8328a5ea 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -497,9 +497,6 @@ private void showSearchOnStart() { + lastSearchedString); } searchEditText.setText(searchString); - if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { - searchEditText.setHintTextColor(searchEditText.getTextColors().withAlpha(128)); - } if (TextUtils.isEmpty(searchString) || TextUtils.isEmpty(searchEditText.getText())) { searchToolbarContainer.setTranslationX(100); diff --git a/app/src/main/java/org/schabi/newpipe/ktx/View.kt b/app/src/main/java/org/schabi/newpipe/ktx/View.kt index ace1dbf7ef2..ea680dd60ba 100644 --- a/app/src/main/java/org/schabi/newpipe/ktx/View.kt +++ b/app/src/main/java/org/schabi/newpipe/ktx/View.kt @@ -12,7 +12,6 @@ import android.view.View import androidx.annotation.ColorInt import androidx.annotation.FloatRange import androidx.core.animation.addListener -import androidx.core.view.ViewCompat import androidx.core.view.isGone import androidx.core.view.isInvisible import androidx.core.view.isVisible @@ -21,10 +20,6 @@ import org.schabi.newpipe.MainActivity private const val TAG = "ViewUtils" -inline var View.backgroundTintListCompat: ColorStateList? - get() = ViewCompat.getBackgroundTintList(this) - set(value) = ViewCompat.setBackgroundTintList(this, value) - /** * Animate the view. * @@ -106,11 +101,11 @@ fun View.animateBackgroundColor(duration: Long, @ColorInt colorStart: Int, @Colo viewPropertyAnimator.interpolator = FastOutSlowInInterpolator() viewPropertyAnimator.duration = duration viewPropertyAnimator.addUpdateListener { animation: ValueAnimator -> - backgroundTintListCompat = ColorStateList(empty, intArrayOf(animation.animatedValue as Int)) + backgroundTintList = ColorStateList(empty, intArrayOf(animation.animatedValue as Int)) } viewPropertyAnimator.addListener( - onCancel = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) }, - onEnd = { backgroundTintListCompat = ColorStateList(empty, intArrayOf(colorEnd)) } + onCancel = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) }, + onEnd = { backgroundTintList = ColorStateList(empty, intArrayOf(colorEnd)) } ) viewPropertyAnimator.start() } diff --git a/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt b/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt index e9632896195..379b4c0d778 100644 --- a/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt +++ b/app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt @@ -8,12 +8,10 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.Toast -import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.getSystemService import androidx.core.os.bundleOf import androidx.core.view.isGone import androidx.core.view.isVisible -import androidx.core.widget.ImageViewCompat import androidx.core.widget.doOnTextChanged import androidx.fragment.app.DialogFragment import androidx.lifecycle.Observer @@ -124,14 +122,6 @@ class FeedGroupDialog : DialogFragment(), BackPressable { _feedGroupCreateBinding = DialogFeedGroupCreateBinding.bind(view) _searchLayoutBinding = feedGroupCreateBinding.subscriptionsHeaderSearchContainer - if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { - // KitKat doesn't apply container's theme to content - val contrastColor = AppCompatResources.getColorStateList(requireContext(), R.color.contrastColor) - searchLayoutBinding.toolbarSearchEditText.setTextColor(contrastColor) - searchLayoutBinding.toolbarSearchEditText.setHintTextColor(contrastColor.withAlpha(128)) - ImageViewCompat.setImageTintList(searchLayoutBinding.toolbarSearchClearIcon, contrastColor) - } - viewModel = ViewModelProvider( this, FeedGroupDialogViewModel.Factory( diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index bae88d07c4d..100563765d4 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -1963,10 +1963,9 @@ private void showOrHideButtons() { private void showSystemUIPartially() { final AppCompatActivity activity = getParentActivity(); if (isFullscreen && activity != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - activity.getWindow().setStatusBarColor(Color.TRANSPARENT); - activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); - } + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); + final int visibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; diff --git a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java index 70ac5cdcc7d..550d64d06e6 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java @@ -74,7 +74,7 @@ private void applyThemeChange(final String beginningThemeKey, defaultPreferences.edit().putBoolean(Constants.KEY_THEME_CHANGE, true).apply(); defaultPreferences.edit().putString(themeKey, newValue.toString()).apply(); - ThemeHelper.setDayNightMode(getContext(), newValue.toString()); + ThemeHelper.setDayNightMode(requireContext(), newValue.toString()); if (!newValue.equals(beginningThemeKey) && getActivity() != null) { // if it's not the current theme diff --git a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java index ec98b865ea5..74dc9f63e93 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/DownloadSettingsFragment.java @@ -66,16 +66,10 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro prefStorageAsk = findPreference(downloadStorageAsk); final SwitchPreferenceCompat prefUseSaf = findPreference(storageUseSafPreference); - prefUseSaf.setDefaultValue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP); prefUseSaf.setChecked(NewPipeSettings.useStorageAccessFramework(ctx)); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q - || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { prefUseSaf.setEnabled(false); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29); - } else { - prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_19); - } + prefUseSaf.setSummary(R.string.downloads_storage_use_saf_summary_api_29); prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary_no_saf_notice); } @@ -253,8 +247,7 @@ private void requestDownloadPathResult(final ActivityResult result, final String forgetSAFTree(context, defaultPreferences.getString(key, "")); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - && !FilePickerActivityHelper.isOwnFileUri(context, uri)) { + if (!FilePickerActivityHelper.isOwnFileUri(context, uri)) { // steps to acquire the selected path: // 1. acquire permissions on the new save path // 2. save the new path, if step(2) was successful diff --git a/app/src/main/java/org/schabi/newpipe/settings/NewPipeSettings.java b/app/src/main/java/org/schabi/newpipe/settings/NewPipeSettings.java index 1e1d08856df..16df646f981 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/NewPipeSettings.java +++ b/app/src/main/java/org/schabi/newpipe/settings/NewPipeSettings.java @@ -116,7 +116,7 @@ private static String getNewPipeChildFolderPathForDir(final File dir) { public static boolean useStorageAccessFramework(final Context context) { // There's a FireOS bug which prevents SAF open/close dialogs from being confirmed with a // remote (see #6455). - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP || DeviceUtils.isFireTv()) { + if (DeviceUtils.isFireTv()) { return false; } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return true; diff --git a/app/src/main/java/org/schabi/newpipe/settings/NotificationSettingsFragment.kt b/app/src/main/java/org/schabi/newpipe/settings/NotificationSettingsFragment.kt index 6bea8b69e36..11eb4fa333d 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/NotificationSettingsFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/NotificationSettingsFragment.kt @@ -1,19 +1,9 @@ package org.schabi.newpipe.settings -import android.os.Build import android.os.Bundle -import androidx.preference.Preference -import org.schabi.newpipe.R class NotificationSettingsFragment : BasePreferenceFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResourceRegistry() - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key)) - colorizePref?.let { - preferenceScreen.removePreference(it) - } - } } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/PlayerNotificationSettingsFragment.kt b/app/src/main/java/org/schabi/newpipe/settings/PlayerNotificationSettingsFragment.kt index 3549bff42e0..7d95433a49c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/PlayerNotificationSettingsFragment.kt +++ b/app/src/main/java/org/schabi/newpipe/settings/PlayerNotificationSettingsFragment.kt @@ -1,19 +1,9 @@ package org.schabi.newpipe.settings -import android.os.Build import android.os.Bundle -import androidx.preference.Preference -import org.schabi.newpipe.R class PlayerNotificationSettingsFragment : BasePreferenceFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResourceRegistry() - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - val colorizePref: Preference? = findPreference(getString(R.string.notification_colorize_key)) - colorizePref?.let { - preferenceScreen.removePreference(it) - } - } } } diff --git a/app/src/main/java/org/schabi/newpipe/settings/SettingMigrations.java b/app/src/main/java/org/schabi/newpipe/settings/SettingMigrations.java index 8924ecbe12a..b1e2c04ebf3 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/SettingMigrations.java +++ b/app/src/main/java/org/schabi/newpipe/settings/SettingMigrations.java @@ -2,7 +2,6 @@ import android.content.Context; import android.content.SharedPreferences; -import android.os.Build; import android.util.Log; import androidx.preference.PreferenceManager; @@ -71,12 +70,12 @@ protected void migrate(final Context context) { // and standard way to access folders and files to be used consistently everywhere. // We reset the setting to its default value, i.e. "use SAF", since now there are no // more issues with SAF and users should use that one instead of the old - // NoNonsenseFilePicker. SAF does not work on KitKat and below, though, so the setting - // is set to false in that case. Also, there's a bug on FireOS in which SAF open/close + // NoNonsenseFilePicker. Also, there's a bug on FireOS in which SAF open/close // dialogs cannot be confirmed with a remote (see #6455). - sp.edit().putBoolean(context.getString(R.string.storage_use_saf), - Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - && !DeviceUtils.isFireTv()).apply(); + sp.edit().putBoolean( + context.getString(R.string.storage_use_saf), + !DeviceUtils.isFireTv() + ).apply(); } }; diff --git a/app/src/main/java/org/schabi/newpipe/settings/custom/NotificationActionsPreference.java b/app/src/main/java/org/schabi/newpipe/settings/custom/NotificationActionsPreference.java index 798d299c026..849574171c1 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/custom/NotificationActionsPreference.java +++ b/app/src/main/java/org/schabi/newpipe/settings/custom/NotificationActionsPreference.java @@ -218,7 +218,7 @@ void openActionChooserDialog() { final int color = ThemeHelper.resolveColorFromAttr(getContext(), android.R.attr.textColorPrimary); drawable = DrawableCompat.wrap(drawable).mutate(); - DrawableCompat.setTint(drawable, color); + drawable.setTint(color); radioButton.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, drawable, null); } diff --git a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchResultHighlighter.java b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchResultHighlighter.java index 418a3ea4614..7eae5c128e2 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchResultHighlighter.java +++ b/app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchResultHighlighter.java @@ -6,7 +6,6 @@ import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.graphics.drawable.RippleDrawable; -import android.os.Build; import android.os.Handler; import android.os.Looper; import android.util.Log; @@ -65,8 +64,7 @@ private static void doHighlight( recyclerView.findViewHolderForAdapterPosition(position); if (holder != null) { final Drawable background = holder.itemView.getBackground(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - && background instanceof RippleDrawable) { + if (background instanceof RippleDrawable) { showRippleAnimation((RippleDrawable) background); return; } diff --git a/app/src/main/java/org/schabi/newpipe/streams/io/StoredDirectoryHelper.java b/app/src/main/java/org/schabi/newpipe/streams/io/StoredDirectoryHelper.java index feca89f0272..48ae54284d9 100644 --- a/app/src/main/java/org/schabi/newpipe/streams/io/StoredDirectoryHelper.java +++ b/app/src/main/java/org/schabi/newpipe/streams/io/StoredDirectoryHelper.java @@ -5,7 +5,6 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; -import android.os.Build; import android.provider.DocumentsContract; import androidx.annotation.NonNull; @@ -53,10 +52,6 @@ public StoredDirectoryHelper(@NonNull final Context context, @NonNull final Uri throw new IOException(e); } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - throw new IOException("Storage Access Framework with Directory API is not available"); - } - this.docTree = DocumentFile.fromTreeUri(context, path); if (this.docTree == null) { @@ -73,7 +68,7 @@ public StoredFileHelper createUniqueFile(final String name, final String mime) { final String[] filename = splitFilename(name); final String lcFilename = filename[0].toLowerCase(); - if (docTree == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + if (docTree == null) { for (final File file : ioTree.listFiles()) { addIfStartWith(matches, lcFilename, file.getName()); } @@ -277,7 +272,7 @@ private static String makeFileName(final String name, final int idx, final Strin */ static DocumentFile findFileSAFHelper(@Nullable final Context context, final DocumentFile tree, final String filename) { - if (context == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + if (context == null) { return tree.findFile(filename); // warning: this is very slow } diff --git a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java index 9fe4a9340f9..1f0c914568d 100644 --- a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java +++ b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java @@ -1,6 +1,5 @@ package org.schabi.newpipe.streams.io; -import android.annotation.TargetApi; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -74,7 +73,6 @@ public StoredFileHelper(@Nullable final Uri parent, final String filename, final this.tag = tag; } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) StoredFileHelper(@Nullable final Context context, final DocumentFile tree, final String filename, final String mime, final boolean safe) throws IOException { @@ -124,7 +122,6 @@ public StoredFileHelper(@Nullable final Uri parent, final String filename, final this.srcType = mime; } - @TargetApi(Build.VERSION_CODES.KITKAT) public StoredFileHelper(final Context context, @Nullable final Uri parent, @NonNull final Uri path, final String tag) throws IOException { this.tag = tag; diff --git a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java index a4ff5ff196b..7f4b33f44ee 100644 --- a/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java +++ b/app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java @@ -65,7 +65,7 @@ public static boolean isTv(final Context context) { boolean isTv = ContextCompat.getSystemService(context, UiModeManager.class) .getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION || isFireTv() - || pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION); + || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); // from https://stackoverflow.com/a/58932366 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -77,10 +77,6 @@ public static boolean isTv(final Context context) { && pm.hasSystemFeature(PackageManager.FEATURE_ETHERNET)); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - isTv = isTv || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK); - } - DeviceUtils.isTV = isTv; return DeviceUtils.isTV; } @@ -131,11 +127,10 @@ public static int spToPx(@Dimension(unit = Dimension.SP) final int sp, /** * Some devices have broken tunneled video playback but claim to support it. * See https://github.com/TeamNewPipe/NewPipe/issues/5911 - * @return false if Kitkat (does not support tunneling) or affected device + * @return false if affected device */ public static boolean shouldSupportMediaTunneling() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP - && !HI3798MV200 + return !HI3798MV200 && !CVT_MT5886_EU_1G && !REALTEKATV && !QM16XE_U; diff --git a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java index 160eb59cd2a..1e30613741e 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java @@ -37,7 +37,6 @@ public static boolean checkStoragePermissions(final Activity activity, final int return checkWriteStoragePermissions(activity, requestCode); } - @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public static boolean checkReadStoragePermissions(final Activity activity, final int requestCode) { if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) diff --git a/app/src/main/java/org/schabi/newpipe/util/TLSSocketFactoryCompat.java b/app/src/main/java/org/schabi/newpipe/util/TLSSocketFactoryCompat.java deleted file mode 100644 index 05e69408a9d..00000000000 --- a/app/src/main/java/org/schabi/newpipe/util/TLSSocketFactoryCompat.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.schabi.newpipe.util; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.Socket; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocket; -import javax.net.ssl.SSLSocketFactory; - -import android.util.Log; - - -/** - * This is an extension of the SSLSocketFactory which enables TLS 1.2 and 1.1. - * Created for usage on Android 4.1-4.4 devices, which haven't enabled those by default. - */ -public class TLSSocketFactoryCompat extends SSLSocketFactory { - - private static final String TAG = "TLSSocketFactoryCom"; - - private static TLSSocketFactoryCompat instance = null; - - private final SSLSocketFactory internalSSLSocketFactory; - - public TLSSocketFactoryCompat() throws KeyManagementException, NoSuchAlgorithmException { - final SSLContext context = SSLContext.getInstance("TLS"); - context.init(null, null, null); - internalSSLSocketFactory = context.getSocketFactory(); - } - - public static TLSSocketFactoryCompat getInstance() - throws NoSuchAlgorithmException, KeyManagementException { - if (instance != null) { - return instance; - } - instance = new TLSSocketFactoryCompat(); - return instance; - } - - public static void setAsDefault() { - try { - HttpsURLConnection.setDefaultSSLSocketFactory(getInstance()); - } catch (NoSuchAlgorithmException | KeyManagementException e) { - Log.e(TAG, "Unable to setAsDefault", e); - } - } - - @Override - public String[] getDefaultCipherSuites() { - return internalSSLSocketFactory.getDefaultCipherSuites(); - } - - @Override - public String[] getSupportedCipherSuites() { - return internalSSLSocketFactory.getSupportedCipherSuites(); - } - - @Override - public Socket createSocket() throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket()); - } - - @Override - public Socket createSocket(final Socket s, final String host, final int port, - final boolean autoClose) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(s, host, port, autoClose)); - } - - @Override - public Socket createSocket(final String host, final int port) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port)); - } - - @Override - public Socket createSocket(final String host, final int port, final InetAddress localHost, - final int localPort) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket( - host, port, localHost, localPort)); - } - - @Override - public Socket createSocket(final InetAddress host, final int port) throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket(host, port)); - } - - @Override - public Socket createSocket(final InetAddress address, final int port, - final InetAddress localAddress, final int localPort) - throws IOException { - return enableTLSOnSocket(internalSSLSocketFactory.createSocket( - address, port, localAddress, localPort)); - } - - private Socket enableTLSOnSocket(final Socket socket) { - if (socket instanceof SSLSocket) { - ((SSLSocket) socket).setEnabledProtocols(new String[]{"TLSv1.1", "TLSv1.2"}); - } - return socket; - } -} 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 8324146fef0..debeb902c92 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 @@ -185,17 +185,10 @@ private static void openAppChooser(@NonNull final Context context, } // Migrate any clip data and flags from the original intent. - final int permFlags; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION - | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION); - } else { - permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION - | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); - } + final int permFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION + | Intent.FLAG_GRANT_WRITE_URI_PERMISSION + | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION + | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION); if (permFlags != 0) { ClipData targetClipData = intent.getClipData(); if (targetClipData == null && intent.getData() != null) { diff --git a/app/src/main/java/org/schabi/newpipe/views/CollapsibleView.java b/app/src/main/java/org/schabi/newpipe/views/CollapsibleView.java index e1ada4f9bdb..f79e1e3a3ff 100644 --- a/app/src/main/java/org/schabi/newpipe/views/CollapsibleView.java +++ b/app/src/main/java/org/schabi/newpipe/views/CollapsibleView.java @@ -21,7 +21,6 @@ import android.animation.ValueAnimator; import android.content.Context; -import android.os.Build; import android.os.Parcelable; import android.util.AttributeSet; import android.util.Log; @@ -29,7 +28,6 @@ import androidx.annotation.IntDef; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import org.schabi.newpipe.ktx.ViewUtils; @@ -76,7 +74,6 @@ public CollapsibleView(final Context context, @Nullable final AttributeSet attrs super(context, attrs, defStyleAttr); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public CollapsibleView(final Context context, final AttributeSet attrs, final int defStyleAttr, final int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); diff --git a/app/src/main/java/org/schabi/newpipe/views/ExpandableSurfaceView.java b/app/src/main/java/org/schabi/newpipe/views/ExpandableSurfaceView.java index cfa17e20c0b..175c81e465a 100644 --- a/app/src/main/java/org/schabi/newpipe/views/ExpandableSurfaceView.java +++ b/app/src/main/java/org/schabi/newpipe/views/ExpandableSurfaceView.java @@ -1,7 +1,6 @@ package org.schabi.newpipe.views; import android.content.Context; -import android.os.Build; import android.util.AttributeSet; import android.view.SurfaceView; @@ -45,10 +44,7 @@ protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec scaleX = 1.0f; scaleY = 1.0f; - if (resizeMode == RESIZE_MODE_FIT - // KitKat doesn't work well when a view has a scale like needed for ZOOM - || (resizeMode == RESIZE_MODE_ZOOM - && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)) { + if (resizeMode == RESIZE_MODE_FIT) { if (aspectDeformation > 0) { height = (int) (width / videoAspectRatio); } else { diff --git a/app/src/main/java/org/schabi/newpipe/views/FocusAwareCoordinator.java b/app/src/main/java/org/schabi/newpipe/views/FocusAwareCoordinator.java index 798d08c729c..747aed025cf 100644 --- a/app/src/main/java/org/schabi/newpipe/views/FocusAwareCoordinator.java +++ b/app/src/main/java/org/schabi/newpipe/views/FocusAwareCoordinator.java @@ -17,10 +17,8 @@ */ package org.schabi.newpipe.views; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Rect; -import android.os.Build; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -74,7 +72,6 @@ public void requestChildFocus(final View child, final View focused) { * Makes possible for multiple fragments to co-exist. Without this code * the first ViewGroup who consumes will be the last who receive the insets */ - @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public WindowInsets dispatchApplyWindowInsets(final WindowInsets insets) { boolean consumed = false; diff --git a/app/src/main/java/us/shandian/giga/get/DownloadMission.java b/app/src/main/java/us/shandian/giga/get/DownloadMission.java index 9d8eaf9a532..04930b002de 100644 --- a/app/src/main/java/us/shandian/giga/get/DownloadMission.java +++ b/app/src/main/java/us/shandian/giga/get/DownloadMission.java @@ -1,6 +1,5 @@ package us.shandian.giga.get; -import android.os.Build; import android.os.Handler; import android.system.ErrnoException; import android.system.OsConstants; @@ -316,16 +315,14 @@ synchronized void notifyError(Exception err) { public synchronized void notifyError(int code, Exception err) { Log.e(TAG, "notifyError() code = " + code, err); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - if (err != null && err.getCause() instanceof ErrnoException) { - int errno = ((ErrnoException) err.getCause()).errno; - if (errno == OsConstants.ENOSPC) { - code = ERROR_INSUFFICIENT_STORAGE; - err = null; - } else if (errno == OsConstants.EACCES) { - code = ERROR_PERMISSION_DENIED; - err = null; - } + if (err != null && err.getCause() instanceof ErrnoException) { + int errno = ((ErrnoException) err.getCause()).errno; + if (errno == OsConstants.ENOSPC) { + code = ERROR_INSUFFICIENT_STORAGE; + err = null; + } else if (errno == OsConstants.EACCES) { + code = ERROR_PERMISSION_DENIED; + err = null; } } diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index d96b4fc5b6c..8b8a6ff0939 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -4,10 +4,8 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.graphics.Bitmap; @@ -18,7 +16,6 @@ import android.net.NetworkRequest; import android.net.Uri; import android.os.Binder; -import android.os.Build; import android.os.Handler; import android.os.Handler.Callback; import android.os.IBinder; @@ -100,7 +97,6 @@ public class DownloadManagerService extends Service { private final ArrayList mEchoObservers = new ArrayList<>(1); private ConnectivityManager mConnectivityManager; - private BroadcastReceiver mNetworkStateListener = null; private ConnectivityManager.NetworkCallback mNetworkStateListenerL = null; private SharedPreferences mPrefs = null; @@ -166,28 +162,18 @@ public void onCreate() { mConnectivityManager = ContextCompat.getSystemService(this, ConnectivityManager.class); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() { - @Override - public void onAvailable(Network network) { - handleConnectivityState(false); - } + mNetworkStateListenerL = new ConnectivityManager.NetworkCallback() { + @Override + public void onAvailable(Network network) { + handleConnectivityState(false); + } - @Override - public void onLost(Network network) { - handleConnectivityState(false); - } - }; - mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL); - } else { - mNetworkStateListener = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - handleConnectivityState(false); - } - }; - registerReceiver(mNetworkStateListener, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); - } + @Override + public void onLost(Network network) { + handleConnectivityState(false); + } + }; + mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder().build(), mNetworkStateListenerL); mPrefs.registerOnSharedPreferenceChangeListener(mPrefChangeListener); @@ -246,10 +232,7 @@ public void onDestroy() { manageLock(false); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) - mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL); - else - unregisterReceiver(mNetworkStateListener); + mConnectivityManager.unregisterNetworkCallback(mNetworkStateListenerL); mPrefs.unregisterOnSharedPreferenceChangeListener(mPrefChangeListener); @@ -263,21 +246,6 @@ public void onDestroy() { @Override public IBinder onBind(Intent intent) { - /* - int permissionCheck; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { - permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE); - if (permissionCheck == PermissionChecker.PERMISSION_DENIED) { - Toast.makeText(this, "Permission denied (read)", Toast.LENGTH_SHORT).show(); - } - } - - permissionCheck = PermissionChecker.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); - if (permissionCheck == PermissionChecker.PERMISSION_DENIED) { - Toast.makeText(this, "Permission denied (write)", Toast.LENGTH_SHORT).show(); - } - */ - return mBinder; } @@ -473,12 +441,7 @@ public void notifyFinishedDownload(String name) { if (downloadDoneCount == 1) { downloadDoneList.append(name); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - downloadDoneNotification.setContentTitle(getString(R.string.app_name)); - } else { - downloadDoneNotification.setContentTitle(null); - } - + downloadDoneNotification.setContentTitle(null); downloadDoneNotification.setContentText(Localization.downloadCount(this, downloadDoneCount)); downloadDoneNotification.setStyle(new NotificationCompat.BigTextStyle() .setBigContentTitle(Localization.downloadCount(this, downloadDoneCount)) @@ -511,16 +474,10 @@ public void notifyFailedDownload(DownloadMission mission) { .setContentIntent(mOpenDownloadList); } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - downloadFailedNotification.setContentTitle(getString(R.string.app_name)); - downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() - .bigText(getString(R.string.download_failed).concat(": ").concat(mission.storage.getName()))); - } else { - downloadFailedNotification.setContentTitle(getString(R.string.download_failed)); - downloadFailedNotification.setContentText(mission.storage.getName()); - downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() - .bigText(mission.storage.getName())); - } + downloadFailedNotification.setContentTitle(getString(R.string.download_failed)); + downloadFailedNotification.setContentText(mission.storage.getName()); + downloadFailedNotification.setStyle(new NotificationCompat.BigTextStyle() + .bigText(mission.storage.getName())); mNotificationManager.notify(id, downloadFailedNotification.build()); } @@ -556,12 +513,7 @@ private StoredDirectoryHelper loadMainStorage(@StringRes int prefKey, String tag if (path.charAt(0) == File.separatorChar) { Log.i(TAG, "Old save path style present: " + path); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) - path = Uri.fromFile(new File(path)).toString(); - else - path = ""; - + path = ""; mPrefs.edit().putString(getString(prefKey), "").apply(); } diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index 961c45bc5bc..343b13ef8f9 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -350,10 +350,8 @@ private void viewWithFileProvider(Mission mission) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(resolveShareableUri(mission), mimeType); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); + intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - intent.addFlags(FLAG_GRANT_PREFIX_URI_PERMISSION); - } if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { intent.addFlags(FLAG_ACTIVITY_NEW_TASK); } diff --git a/app/src/main/res/layout-land/activity_player_queue_control.xml b/app/src/main/res/layout-land/activity_player_queue_control.xml index c2359552ecd..7d3b43ecc34 100644 --- a/app/src/main/res/layout-land/activity_player_queue_control.xml +++ b/app/src/main/res/layout-land/activity_player_queue_control.xml @@ -138,8 +138,8 @@ android:clickable="true" android:focusable="true" android:scaleType="fitCenter" + android:src="@drawable/ic_pause" android:tint="?attr/colorAccent" - app:srcCompat="@drawable/ic_pause" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout-large-land/fragment_video_detail.xml b/app/src/main/res/layout-large-land/fragment_video_detail.xml index 851085b5be3..d8e52b35427 100644 --- a/app/src/main/res/layout-large-land/fragment_video_detail.xml +++ b/app/src/main/res/layout-large-land/fragment_video_detail.xml @@ -65,8 +65,8 @@ android:layout_height="64dp" android:layout_gravity="center" android:background="@android:color/transparent" + android:src="@drawable/ic_play_arrow_shadow" android:visibility="invisible" - app:srcCompat="@drawable/ic_play_arrow_shadow" tools:ignore="ContentDescription" tools:visibility="visible" /> @@ -199,7 +199,7 @@ android:layout_gravity="top|end" android:layout_marginTop="11dp" android:layout_marginEnd="10dp" - app:srcCompat="@drawable/ic_expand_more" + android:src="@drawable/ic_expand_more" tools:ignore="ContentDescription" /> @@ -326,18 +326,6 @@ tools:text="Uploader" /> - @@ -369,7 +357,7 @@ android:layout_height="@dimen/video_item_detail_like_image_height" android:layout_below="@id/detail_view_count_view" android:contentDescription="@string/detail_likes_img_view_description" - app:srcCompat="@drawable/ic_thumb_up" /> + android:src="@drawable/ic_thumb_up" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> @@ -526,12 +514,12 @@ android:background="?attr/selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/share" + android:drawableTop="@drawable/ic_share" android:focusable="true" android:gravity="center" android:paddingVertical="@dimen/detail_control_padding" android:text="@string/share" - android:textSize="@dimen/detail_control_text_size" - app:drawableTopCompat="@drawable/ic_share" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> - + android:textSize="@dimen/detail_control_text_size" /> @@ -719,7 +707,7 @@ android:scaleType="center" android:focusable="true" android:focusedByDefault="true" - app:srcCompat="@drawable/ic_play_arrow" + android:src="@drawable/ic_play_arrow" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/activity_player_queue_control.xml b/app/src/main/res/layout/activity_player_queue_control.xml index 24e06293226..29efa36f92e 100644 --- a/app/src/main/res/layout/activity_player_queue_control.xml +++ b/app/src/main/res/layout/activity_player_queue_control.xml @@ -174,8 +174,8 @@ android:clickable="true" android:focusable="true" android:scaleType="fitXY" + android:src="@drawable/ic_repeat" android:tint="?attr/colorAccent" - app:srcCompat="@drawable/ic_repeat" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/dialog_feed_group_create.xml b/app/src/main/res/layout/dialog_feed_group_create.xml index a08041e97d1..464940238b1 100644 --- a/app/src/main/res/layout/dialog_feed_group_create.xml +++ b/app/src/main/res/layout/dialog_feed_group_create.xml @@ -193,8 +193,8 @@ android:layout_centerVertical="true" android:minWidth="0dp" android:scaleType="centerInside" + android:src="@drawable/ic_delete" android:visibility="gone" - app:srcCompat="@drawable/ic_delete" tools:ignore="ContentDescription" tools:visibility="visible" /> diff --git a/app/src/main/res/layout/dialog_playback_parameter.xml b/app/src/main/res/layout/dialog_playback_parameter.xml index e402f4fb170..cc506cc79d1 100644 --- a/app/src/main/res/layout/dialog_playback_parameter.xml +++ b/app/src/main/res/layout/dialog_playback_parameter.xml @@ -1,6 +1,5 @@ @@ -20,7 +19,7 @@ android:layout_centerVertical="true" android:layout_marginLeft="12dp" android:layout_marginRight="12dp" - app:srcCompat="@drawable/ic_playlist_add" + android:src="@drawable/ic_playlist_add" tools:ignore="ContentDescription,RtlHardcoded" /> + tools:src="@drawable/ic_smart_display" /> diff --git a/app/src/main/res/layout/feed_group_add_new_item.xml b/app/src/main/res/layout/feed_group_add_new_item.xml index df3fc9b3a17..0dfe819a6e3 100644 --- a/app/src/main/res/layout/feed_group_add_new_item.xml +++ b/app/src/main/res/layout/feed_group_add_new_item.xml @@ -24,7 +24,7 @@ android:layout_height="14dp" android:layout_gravity="center" android:scaleType="centerInside" - app:srcCompat="@drawable/ic_add" + android:src="@drawable/ic_add" tools:ignore="ContentDescription" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index db93f1d8df4..1807acb1093 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,5 +1,4 @@ + android:src="@mipmap/ic_launcher" /> + app:layout_constraintEnd_toEndOf="parent" /> diff --git a/app/src/main/res/layout/fragment_description.xml b/app/src/main/res/layout/fragment_description.xml index b020d5db373..157b8f394f9 100644 --- a/app/src/main/res/layout/fragment_description.xml +++ b/app/src/main/res/layout/fragment_description.xml @@ -38,11 +38,11 @@ android:contentDescription="@string/description_select_enable" android:focusable="true" android:padding="5dp" + android:src="@drawable/ic_select_all" app:layout_constraintBottom_toTopOf="@+id/barrier" app:layout_constraintDimensionRatio="1" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_select_all" /> + app:layout_constraintTop_toTopOf="parent" /> @@ -57,7 +56,7 @@ android:layout_alignParentEnd="true" android:layout_marginStart="6dp" android:layout_marginEnd="12dp" - app:srcCompat="@drawable/ic_refresh" + android:src="@drawable/ic_refresh" tools:ignore="ContentDescription" /> + app:fabSize="auto" /> diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml index 08a9bcf0a76..18655283e37 100644 --- a/app/src/main/res/layout/fragment_video_detail.xml +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -55,8 +55,8 @@ android:layout_height="64dp" android:layout_gravity="center" android:background="@android:color/transparent" + android:src="@drawable/ic_play_arrow_shadow" android:visibility="invisible" - app:srcCompat="@drawable/ic_play_arrow_shadow" tools:ignore="ContentDescription" tools:visibility="visible" /> @@ -187,7 +187,7 @@ android:layout_gravity="top|end" android:layout_marginTop="11dp" android:layout_marginEnd="10dp" - app:srcCompat="@drawable/ic_expand_more" + android:src="@drawable/ic_expand_more" tools:ignore="ContentDescription" /> @@ -313,19 +313,6 @@ tools:text="Uploader" /> - - @@ -357,7 +344,7 @@ android:layout_height="@dimen/video_item_detail_like_image_height" android:layout_below="@id/detail_view_count_view" android:contentDescription="@string/detail_likes_img_view_description" - app:srcCompat="@drawable/ic_thumb_up" /> + android:src="@drawable/ic_thumb_up" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> @@ -510,12 +497,12 @@ android:background="?attr/selectableItemBackgroundBorderless" android:clickable="true" android:contentDescription="@string/share" + android:drawableTop="@drawable/ic_share" android:focusable="true" android:gravity="center" android:paddingVertical="@dimen/detail_control_padding" android:text="@string/share" - android:textSize="@dimen/detail_control_text_size" - app:drawableTopCompat="@drawable/ic_share" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> + android:textSize="@dimen/detail_control_text_size" /> - + android:textSize="@dimen/detail_control_text_size" /> @@ -696,7 +683,7 @@ android:scaleType="center" android:focusable="true" android:focusedByDefault="true" - app:srcCompat="@drawable/ic_play_arrow" + android:src="@drawable/ic_play_arrow" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/item_instance.xml b/app/src/main/res/layout/item_instance.xml index dd5b4156fc5..12ecb2ea712 100644 --- a/app/src/main/res/layout/item_instance.xml +++ b/app/src/main/res/layout/item_instance.xml @@ -75,7 +75,7 @@ android:paddingTop="12dp" android:paddingRight="10dp" android:paddingBottom="12dp" - app:srcCompat="@drawable/ic_drag_handle" + android:src="@drawable/ic_drag_handle" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/item_search_suggestion.xml b/app/src/main/res/layout/item_search_suggestion.xml index 4b1025fea7a..f7a07bbcc04 100644 --- a/app/src/main/res/layout/item_search_suggestion.xml +++ b/app/src/main/res/layout/item_search_suggestion.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/list_choose_tabs.xml b/app/src/main/res/layout/list_choose_tabs.xml index e6cebda118e..ed7ad94c434 100644 --- a/app/src/main/res/layout/list_choose_tabs.xml +++ b/app/src/main/res/layout/list_choose_tabs.xml @@ -55,7 +55,7 @@ android:paddingTop="12dp" android:paddingRight="16dp" android:paddingBottom="12dp" - app:srcCompat="@drawable/ic_drag_handle" + android:src="@drawable/ic_drag_handle" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/list_comments_item.xml b/app/src/main/res/layout/list_comments_item.xml index 3b148de03bd..4358c438f1a 100644 --- a/app/src/main/res/layout/list_comments_item.xml +++ b/app/src/main/res/layout/list_comments_item.xml @@ -32,8 +32,8 @@ android:layout_marginRight="@dimen/video_item_detail_pinned_right_margin" android:layout_toEndOf="@+id/itemThumbnailView" android:contentDescription="@string/detail_pinned_comment_view_description" + android:src="@drawable/ic_pin" android:visibility="gone" - app:srcCompat="@drawable/ic_pin" tools:visibility="visible" /> + android:src="@drawable/ic_thumb_up" /> - - - - - + tools:visibility="visible" /> + android:src="@drawable/ic_thumb_up" /> - - - - diff --git a/app/src/main/res/layout/mission_item_linear.xml b/app/src/main/res/layout/mission_item_linear.xml index d7235fcaf73..ce2d1af4be9 100644 --- a/app/src/main/res/layout/mission_item_linear.xml +++ b/app/src/main/res/layout/mission_item_linear.xml @@ -72,7 +72,7 @@ android:layout_marginRight="4dp" android:contentDescription="TODO" android:scaleType="centerInside" - app:srcCompat="@drawable/ic_more_vert" + android:src="@drawable/ic_more_vert" app:tint="?attr/actionColor" /> diff --git a/app/src/main/res/layout/picker_subscription_item.xml b/app/src/main/res/layout/picker_subscription_item.xml index 1aaa1e7d888..c858ccc4e1a 100644 --- a/app/src/main/res/layout/picker_subscription_item.xml +++ b/app/src/main/res/layout/picker_subscription_item.xml @@ -52,8 +52,8 @@ android:layout_gravity="top|center_horizontal" android:layout_marginTop="4dp" android:scaleType="centerInside" + android:src="@drawable/ic_done" app:tint="@color/white" - app:srcCompat="@drawable/ic_done" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/play_queue_item.xml b/app/src/main/res/layout/play_queue_item.xml index 5fb9419f666..7d672dc8bf2 100644 --- a/app/src/main/res/layout/play_queue_item.xml +++ b/app/src/main/res/layout/play_queue_item.xml @@ -89,10 +89,10 @@ android:layout_gravity="center_vertical" android:paddingHorizontal="@dimen/video_item_search_image_right_margin" android:scaleType="center" + android:src="@drawable/ic_drag_handle" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_drag_handle" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/player.xml b/app/src/main/res/layout/player.xml index d748942e0f2..b8b60b3f8b3 100644 --- a/app/src/main/res/layout/player.xml +++ b/app/src/main/res/layout/player.xml @@ -112,8 +112,8 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" + android:src="@drawable/ic_close" android:visibility="gone" - app:srcCompat="@drawable/ic_close" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" /> @@ -198,8 +198,8 @@ android:paddingEnd="3dp" android:paddingBottom="3dp" android:scaleType="fitCenter" + android:src="@drawable/ic_list" android:visibility="gone" - app:srcCompat="@drawable/ic_list" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" /> @@ -216,8 +216,8 @@ android:paddingEnd="6dp" android:paddingBottom="3dp" android:scaleType="fitCenter" + android:src="@drawable/ic_format_list_numbered" android:visibility="gone" - app:srcCompat="@drawable/ic_format_list_numbered" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" /> @@ -230,7 +230,7 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" - app:srcCompat="@drawable/ic_expand_more" + android:src="@drawable/ic_expand_more" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" /> @@ -294,7 +294,7 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" - app:srcCompat="@drawable/ic_cast" + android:src="@drawable/ic_cast" app:tint="@color/white" tools:ignore="RtlHardcoded" /> @@ -309,7 +309,7 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" - app:srcCompat="@drawable/ic_language" + android:src="@drawable/ic_language" app:tint="@color/white" tools:ignore="RtlHardcoded" /> @@ -324,7 +324,7 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" - app:srcCompat="@drawable/ic_share" + android:src="@drawable/ic_share" app:tint="@color/white" tools:ignore="RtlHardcoded" /> @@ -338,7 +338,7 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitXY" - app:srcCompat="@drawable/ic_volume_off" + android:src="@drawable/ic_volume_off" app:tint="@color/white" tools:ignore="RtlHardcoded" /> @@ -351,8 +351,8 @@ android:focusable="true" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitCenter" + android:src="@drawable/ic_fullscreen" android:visibility="gone" - app:srcCompat="@drawable/ic_fullscreen" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" tools:visibility="visible" /> @@ -397,8 +397,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="2dp" + android:src="@drawable/dummy_thumbnail" android:visibility="gone" - app:srcCompat="@drawable/dummy_thumbnail" tools:visibility="visible" /> @@ -475,8 +475,8 @@ android:nextFocusUp="@id/playbackSeekBar" android:padding="@dimen/player_main_buttons_padding" android:scaleType="fitCenter" + android:src="@drawable/ic_fullscreen" android:visibility="gone" - app:srcCompat="@drawable/ic_fullscreen" app:tint="@color/white" tools:ignore="ContentDescription,RtlHardcoded" tools:visibility="visible" /> @@ -500,7 +500,7 @@ android:clickable="true" android:focusable="true" android:scaleType="fitCenter" - app:srcCompat="@drawable/ic_previous" + android:src="@drawable/ic_previous" app:tint="@color/white" tools:ignore="ContentDescription" /> @@ -512,7 +512,7 @@ android:layout_weight="1" android:background="?attr/selectableItemBackgroundBorderless" android:scaleType="fitCenter" - app:srcCompat="@drawable/ic_pause" + android:src="@drawable/ic_pause" app:tint="@color/white" tools:ignore="ContentDescription" /> @@ -526,7 +526,7 @@ android:clickable="true" android:focusable="true" android:scaleType="fitCenter" - app:srcCompat="@drawable/ic_next" + android:src="@drawable/ic_next" app:tint="@color/white" tools:ignore="ContentDescription" /> @@ -577,8 +577,8 @@ android:focusable="true" android:padding="10dp" android:scaleType="fitXY" + android:src="@drawable/exo_controls_repeat_off" android:tint="?attr/colorAccent" - app:srcCompat="@drawable/exo_controls_repeat_off" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/layout/player_fast_seek_seconds_view.xml b/app/src/main/res/layout/player_fast_seek_seconds_view.xml index 57f5aa787b8..2946f8449c7 100644 --- a/app/src/main/res/layout/player_fast_seek_seconds_view.xml +++ b/app/src/main/res/layout/player_fast_seek_seconds_view.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/player_popup_close_overlay.xml b/app/src/main/res/layout/player_popup_close_overlay.xml index b2403583deb..10d81d77ede 100644 --- a/app/src/main/res/layout/player_popup_close_overlay.xml +++ b/app/src/main/res/layout/player_popup_close_overlay.xml @@ -10,8 +10,8 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:layout_marginBottom="24dp" + android:src="@drawable/ic_close" app:backgroundTint="@color/light_youtube_primary_color" app:borderWidth="0dp" - app:fabSize="normal" - app:srcCompat="@drawable/ic_close" /> + app:fabSize="normal" /> diff --git a/app/src/main/res/layout/playlist_control.xml b/app/src/main/res/layout/playlist_control.xml index a5f258f509f..5a885612886 100644 --- a/app/src/main/res/layout/playlist_control.xml +++ b/app/src/main/res/layout/playlist_control.xml @@ -1,6 +1,5 @@ + android:textSize="@dimen/channel_rss_title_size" /> + android:textSize="@dimen/channel_rss_title_size" /> diff --git a/app/src/main/res/layout/statistic_playlist_control.xml b/app/src/main/res/layout/statistic_playlist_control.xml index 577e94e4b4e..36540d32e91 100644 --- a/app/src/main/res/layout/statistic_playlist_control.xml +++ b/app/src/main/res/layout/statistic_playlist_control.xml @@ -1,6 +1,5 @@ @@ -13,7 +12,7 @@ android:layout_centerVertical="true" android:layout_marginLeft="6dp" android:scaleType="fitCenter" - app:srcCompat="@drawable/ic_volume_off" + android:src="@drawable/ic_volume_off" tools:ignore="ContentDescription,RtlHardcoded" /> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 4e9606f4873..71d849a2f5b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -673,7 +673,6 @@ تعذر تحميل تغذية لـ\'%s\'. خطأ في تحميل الخلاصة بدءًا من Android 10، يتم دعم \"Storage Access Framework\" فقط - \"Storage Access Framework\" غير مدعوم على Android KitKat والإصدارات الأقدم سيتم سؤالك عن مكان حفظ كل تنزيل لم يتم تعيين مجلد التحميل، الرجاء اختيار مجلد التحميل الافتراضي الآن إيقاف diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 95b7b76f4a7..2d9257e3c11 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -463,7 +463,6 @@ Server məlumat göndərmir Bu endirməni bərpa etmək mümkün deyil Sizdən hər endirmənin harada saxlanacağı soruşulacaq - \'Yaddaş Giriş Çərçivəsi\' Android KitKat və ondan aşağı versiyalarda dəstəklənmir \"Yaddaş Giriş Çərçivəsi\"yalnız Android 10\'dan başlayaraq dəstəklənir Kanalın avatar miniatürü Sevdiyiniz gecə mövzusunu aşağıda seçə bilərsiniz diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index a42e6894089..0992037902d 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -675,7 +675,6 @@ S\'ha suprimit %1$s baixada S\'han suprimit %1$s baixades - El \"Sistema d\'Accés a l\'Emmagatzematge\" no està implementat a Android KitKat i a versions anteriors A partir de l\'Android 10 només s\'admet el \"Sistema d\'Accés a l\'Emmagatzematge\" Elements de feed nous El mode d\'alimentació ràpida no proporciona més informació sobre això. diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 9796404b445..8b6c0843418 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -625,7 +625,6 @@ بۆ دابه‌زاندنی هه‌ر بابه‌تێك پرست پێ ده‌كرێت له‌باره‌ی شوێنی دابه‌زاندنیان ناكاراكردنی تونێلكردنی میدیا ئه‌و بابه‌تانه‌ی نه‌گونجاون بۆ منداڵان پیشان بدرێن كه‌ سنووری ته‌مه‌ن ده‌یانگرێته‌وه‌ (وه‌ك +18) - \'Storage Access Framework\' پشتگیری نه‌كراوه‌ له‌سه‌ر وه‌شانه‌كانی ئه‌ندرۆید كیتكات و نزمتر كڕاشی به‌رنامه‌كه‌ پیشاندانی دزه‌كردنی بیرگه‌ له‌نۆبه‌ت دانرا diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ea6d292d88a..2e840629ddd 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -643,7 +643,6 @@ Feed pro \'%s\' nemohl být načten. Chyba při načítání feedu Počínaje Android 10 je podporován pouze \"Storage Access Framework\" - \"Storage Access Framework\" není podporován na KitKat a níže Budete dotázáni, kde uložit každý stažený soubor Adresář pro stažené soubory dosud nenastaven, zvolte, prosím, výchozí adresář nyní Vypnuto diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b91fec84a1b..4c8e9cfe1cf 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -638,7 +638,6 @@ Noch kein Downloadordner festgelegt, wähle jetzt den Standard-Downloadordner Webseite öffnen Ab Android 10 wird nur noch „Storage Access Framework“ unterstützt - Das „Storage Access Framework“ wird auf Android KitKat und niedriger nicht unterstützt Du wirst jedes Mal gefragt werden, wohin der Download gespeichert werden soll Fehler beim Laden des Feeds Konnte Feed für \'%s\' nicht laden. diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 401b2b06b75..d9239547ba4 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -632,7 +632,6 @@ Αδυναμία φόρτωσης τροφοδοσίας για \'%s\'. Σφάλμα φόρτωσης τροφοδοσίας Από το Android 10 και μετά, μόνο το SAF υποστηρίζεται - Το «Πλαίσιο Πρόσβασης Αποθήκευσης» δεν υποστηρίζεται σε Android KitKat και παλαιότερο Θα ερωτηθείτε πού να αποθηκεύσετε κάθε λήψη Δεν έχει ορισθεί φάκελος λήψεων ακόμα, eπιλέξτε τον προεπιλεγμένο φάκελο τώρα Host diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 51d61c92d74..56d529b0484 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -633,7 +633,6 @@ \n¿Desea desuscribirse de este canal\? Error al cargar el muro Desde Android 10 solo el \'Sistema de Acceso al Almacenamiento\' es soportado - El \'Sistema de Acceso al Almacenamiento\' no es sorportado en Android KitKat o versiones anteriores Se le preguntará dónde guardar cada descarga Deshabilitar el túnel de medios si experimenta una pantalla negra o interrupciones en la reproduccción de videos Deshabilitar el túnel de medios diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 7cb96405a47..11b5266b04c 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -632,7 +632,6 @@ Voog Vali eksemplar Android 10st alates on toetatud ainult salvestusjuurdepääsu raamistik \'Storage Access Framework\' - Android KitKat ja vanemad versioonid ei toeta salvestusjuurdepääsu raamistikku \'Storage Access Framework\' Sinult küsitakse iga kord, kuhu alla laadimine salvestada Südamlik autor Kas sinu meelest on voo laadimine aeglane\? Sel juhul proovi lubada kiire laadimine (seda saad muuta seadetes või vajutades allolevat nuppu). diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 80e2d5a0427..8098db146dc 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -626,7 +626,6 @@ Ezin izan da \'%s\' jarioa kargatu. Errorea jarioa kargatzean Android 10etik aurrera \'Biltegiaren Sarrera Framework\'a soilik onartzen da - \'Biltegiaren Sarrera Framework\'a ez da Android KitKat eta aurreko bertsioetan onartzen Non gorde galdetuko zaizu deskarga bakoitzean Ez da deskargatzeko karpetarik ezarri oraindik, aukeratu lehenetsitako deskargatzeko karpeta orain Pribatutasuna diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index a00c64ad0ec..97fd534f12e 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -636,7 +636,6 @@ اکنون می‌توانید متن درون شرخ را برگزینید. به یاد داشته باشید که در حالت گزینش، ممکن است صفحه چشمک زده و پیوندها قابل کلیک نباشند. هنوز شاخهٔ بارگیری‌ای تنظیم نشده. اکنون شاخهٔ بارگیری پیش‌گزیده را برگزینید برای ذخیرهٔ هر بارگیری از شما پرسیده خواهد شد - «چارچوب دسترسی ذخیره» روی اندروید کیت‌کت و پایین‌تر پشتیبانی نمی‌شود از اندروید ۱۰، تنها «چارچوب دسترسی ذخیره» پشتیبانی می‌شود نتوانست خوراک را برای «%s» بار کند. حساب این نگارنده نابود شده است. diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 8eef663b0fb..af19e4f124e 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -638,7 +638,6 @@ \nHaluatko poistaa kanavan tilauksesta\? Ei voitu ladata syötettä hakusanalle \'%s\'. Virhe syötteen lataamisessa - \'Storage Access Framework\' ei ole tuettu Android KitKatissa tai vanhemmissa versioissa Sinulta kysytään joka kerta, minne tiedosto ladataan Älä näytä Matala laatu (pienempi) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3278776518c..e09f292b02f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -640,7 +640,6 @@ \nNewPipe ne sera plus en mesure de charger ce flux à l’avenir. \nSouhaitez-vous vous désabonner de cette chaîne \? À partir d’Android 10, seule « l’Infrastructure d’accès au stockage  » est prise en charge - L’« Infrastructure d’accès au stockage » n’est pas prise en charge par Android KitKat et les versions antérieures Le mode flux rapide ne fournit pas plus d’info à ce sujet. Les commentaires sont désactivés Ne pas afficher diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 06b35acd3f1..5cf8abcf0d4 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -678,7 +678,6 @@ Procesando... Pode devagar un momento Crear unha notificación de erro Amosar fitas coloridas de Picasso na cima das imaxes que indican a súa fonte: vermello para a rede, azul para o disco e verde para a memoria - O \'Sistema de Acceso ao almacenamento\' non está soportado en Android KitKat e anteriores Novos elementos Predefinido do ExoPlayer Amosar \"Travar o reprodutor\" diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index b0ece06f194..de5128493a2 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -653,7 +653,6 @@ לא ניתן לטעון את ההזנה עבור ‚%s’. שגיאה בהורדת ההזנה התמיכה ב‚תשתית גישה לאחסון’ נתמכת מ־Android 10 בלבד - ‚תשתית הגישה לאחסון’ אינה נתמכת על ידי Android KitKat ומטה תופיע שאלה לאן לשמור כל הורדה טרם הוגדרה תיקיית הורדה, נא לבחור את תיקיית ההורדה כעת כבוי diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 0ca0c75dc1f..cb7db9f44c6 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -643,7 +643,6 @@ Nije moguće učitati feed za \'%s\'. Pogreška pri učitavanju feeda Počevši od Androida 10, podržan je samo \'Storage Access Framework\' - „Storage Access Framework“ nije podržan na Androidu KitKat i starijim Od vas će se tražiti gdje spremiti svako preuzimanje Ne prikazuj Niska kvaliteta (manji) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index e5457d3e104..e2518398540 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -582,7 +582,6 @@ Tiltsa le a médiacsatornázást, ha fekete képernyőt vagy akadozást tapasztal videólejátszáskor Picasso színes szalagok megjelenítése a képek fölött, megjelölve a forrásukat: piros a hálózathoz, kék a lemezhez, zöld a memóriához Minden letöltésnél meg fogja kérdezni, hogy hova mentse el - A „Storage Access Framework” nem támogatott Android KitKaten vagy régebbin Válasszon egy példányt Lista legutóbbi frissítése: %s Lista betöltése… diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index c1f296849d3..e84fb393a53 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -623,7 +623,6 @@ Tidak bisa memuat langganan untuk \'%s\'. Galat memuat langganan Mulai Android 10, hanya \'Storage Access Framework\' yang didukung - \'Storage Access Framework\' tidak didukung pada Android KitKat dan yang lebih rendah Anda akan ditanya lokasi penyimpanan berkas unduhan Belum ada folder unduhan, pilih folder unduhan sekarang Nonaktif diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f347eba67ac..96d541d805e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -633,7 +633,6 @@ Impossibile caricare feed per \"%s\". Errore caricamento feed A partire da Android 10 è supportato solo il Framework di accesso all\'archiviazione - Il Framework di accesso all\'archiviazione non è supportato su Android KitKat e versioni precedenti È necessario specificare la destinazione di ogni dowload Non è impostata alcuna cartella per i file scaricati, scegliere quella predefinita Disattivata diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 95591212603..e65897de31b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -614,7 +614,6 @@ ダウンロードのたびに保存する場所を尋ねます ダウンロードフォルダがまだ設定されていません。今すぐデフォルトのフォルダを選択してください Android 10 以降は \'Storage Access Framework\' のみがサポートされます - \'Storage Access Framework\' は Android KitKat 以下ではサポートされていません 高速モードでこの情報の詳細は提供されません。 \'%s\' のフィードを読み込めませんでした。 フィードの読み込みエラー diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index e3ffbb03a16..01b2e114ba1 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -647,7 +647,6 @@ \nAr norite atsisakyti šio kanalo prenumeratos\? Klaida įkeliant srautą Pradedant Android 10 palaikoma tik \'Storage Access Framework\' - \'Storage Access Framework\' nėra palaikomas Android KitKat ir žemesnėse versijose Jūsų bus paklausta, kur išsaugoti kiekvieną atsiuntimą Atsiuntimo aplankas dar nenustatytas, pasirinkite numatytąjį atsiuntimų aplanką dabar Komentarai yra išjungti diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 4db63cf13ac..ba8d49e57be 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -636,7 +636,6 @@ Izslēgt multivides tuneļošanu Izslēdziet multivides tuneļošanu, ja jums video atskaņošanas laikā parādās melns ekrāns vai aizķeršanās Rādīt krāsainas lentes virs attēliem, norādot to avotu: sarkana - tīkls, zila - disks, zaļa - atmiņa - “Krātuves Piekļuves Sistēma” ir neatbalstīta uz Android KitKat un zemākām versijām Ieslēgt teksta atlasīšanu video aprakstā Lejupielādes mape vēl nav iestatīta, izvēlieties noklusējuma lejupielādes mapi Pārvelciet objektus, lai tos noņemtu diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index edbc7785e97..0e2cf696270 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -639,7 +639,6 @@ ഫീഡ് ലോഡ് ചെയ്യുന്നതിൽ പിശക് സംഭവിച്ചിരിക്കുന്നു ആൻഡ്രോയ്ഡ് 10 മുതൽ മാത്രമേ \"സ്റ്റോറേജ് അക്സസ് ഫ്രെയിംവർക്ക്\" പിന്തുണക്കു എവിടെ ആണ് ഡൌൺലോഡ് ചെയ്യ്യപെടുന്ന ഓരോ ഫയൽലും സംരക്ഷിക്കപ്പെടേണ്ടത് എന്ന് തങ്കളോട് ചോദിക്കും - ആൻഡ്രോയ്ഡ് കിറ്റ് ക്യാറ്റോ അതിനു താഴെക്കോ ഉള്ളതിൽ \"സ്റ്റോറേജ് ആസസ്സ് ഫ്രെയിംവർക്ക് പിന്തുണക്കുന്നില്ല കാണിക്കരുത് കുറഞ്ഞ നിലവാരം (ചെറുത് ) ഉയർന്ന നിലവാരം (വലിയത് ) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 58b4cb08c46..4bd996edeec 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -618,7 +618,6 @@ Kunne ikke laste inn informasjonskanal for «%s». Kunne ikke laste inn informasjonskanal Fra Android 10 er kun «lagringstilgangsrammeverk» støttet - «Lagringstilgangsrammeverket» støttes ikke på Android KitKat og tidligere. Du vil bli spurt om hvor du vil lagre hver nedlastning Miniatyrbildeforhåndsvisning Ingen nedlastingsmappe valgt. Velg forvalgt nedlastingsmappe nå. diff --git a/app/src/main/res/values-night-v21/styles.xml b/app/src/main/res/values-night/styles.xml similarity index 73% rename from app/src/main/res/values-night-v21/styles.xml rename to app/src/main/res/values-night/styles.xml index eb39dee386b..7327ac145d0 100644 --- a/app/src/main/res/values-night-v21/styles.xml +++ b/app/src/main/res/values-night/styles.xml @@ -2,7 +2,7 @@ - diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 7bdc902a511..fd80a7d547e 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -637,7 +637,6 @@ Kan geen feed laden voor \'%s\'. Error bij het inladen van de feed Vanaf Android 10 is enkel \'Storage Access Framework\' ondersteund - Het \'Storage Access Framework\' is niet ondersteund op Android KitKat en lager U wordt gevraagd waar elk bestand wordt opgeslagen Nog geen downloadfolder gekozen, kies de standaard downloadfolder Geliefd door de maker diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 2b08ebb32d6..46b33206f5b 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -529,7 +529,6 @@ ਐਪ ਭਾਸ਼ਾ ਕੋਈ ਸਥਿਤੀ ਚੁਣੋ \'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ 10 ਤੋਂ ਕੰਮ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ - \'ਸਟੋਰੇਜ ਐਕਸੈੱਸ ਫ਼ਰੇਮਵਰਕ\' ਐਂਡਰਾਇਡ ਕਿਟਕੈਟ ਅਤੇ ਇਸਤੋਂ ਹੇਠਾਂ ਦੇ ਵਰਜਨਾਂ \'ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਡਾਊਨਲੋਡ ਨੂੰ ਕਿੱਥੇ ਸਾਂਭਣਾ ਹੈ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਮਿਟਾਓ ਡਾਊਨਲੋਡ ਇਤਿਹਾਸ ਸਾਫ਼ ਕਰੋ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a09549fcf18..283c1f22333 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -646,7 +646,6 @@ \nCzy chcesz anulować subskrypcję tego kanału\? Nie udało się załadować kanału dla „%s”. Począwszy od Androida 10 obsługiwany jest tylko systemowy selektor folderów (SAF) - Systemowy selektor folderów (SAF) nie jest obsługiwany przez system Android KitKat i niższy Zostaniesz zapytany(-na), gdzie zapisać każdy pobierany plik Nie ustawiono jeszcze folderu zapisywania, wybierz domyślny teraz Błąd podczas ładowania kanału diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 4b0af071890..0a4b2c2ad5a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -633,7 +633,6 @@ Não foi possível carregar o feed para \'%s\'. Erro ao carregar o feed O \'Storage Access Framework\' é compatível apenas com versões a partir do Android 10 - O \'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores Você será questionado onde salvar cada download Nenhuma pasta de download definida ainda, escolha a pasta de download padrão agora Desligado diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 9a9adad5207..4f3559eeb87 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -638,7 +638,6 @@ Não foi possível carregar o feed para \'%s\'. Erro ao carregar o feed A partir do Android 10, apenas o \'Storage Access Framework\' é compatível - \'Storage Access Framework\' não é compatível com Android KitKat e versões anteriores Sempre que descarregar um ficheiro, terá que indicar o local para o guardar Não mostrar Baixa qualidade (menor) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 5453b1fa446..b1f57929824 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -619,7 +619,6 @@ Não foi possível carregar o feed para \'%s\'. Erro ao carregar o feed A partir do Android 10, apenas o \'Storage Access Framework\' é compatível - A \'Framework de acesso ao armazenamento\' não está disponível no Android KitKat e anteriores Pré-visualização da miniatura da barra de pesquisa Marcar como visto Desligado diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index fe2292ef75d..58a38ea6ed2 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -649,7 +649,6 @@ Nu s-a putut încărca fluxul pentru \"%s\". Eroare la încărcarea fluxului Începând cu Android 10, este acceptat doar \"Storage Access Framework\" - \"Storage Access Framework\" nu este acceptat pe Android KitKat și versiunile ulterioare Veți fi întrebat unde să salvați fiecare descărcare S-a șters %1$s descărcare diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 64351c7d3b6..c91368c2a70 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -651,7 +651,6 @@ %s указывает следующую причину: Аккаунт отключён Начиная с Android 10 поддерживается только \"Storage Access Framework\" - \"Storage Access Framework\" не поддерживается на Android KitKat и ниже Спрашивать, куда сохранять каждую загрузку Папка для загрузки ещё не выбрана, укажите папку для загрузки сейчас Отключить diff --git a/app/src/main/res/values-sc/strings.xml b/app/src/main/res/values-sc/strings.xml index 2fc18cb6f02..81a71402e4c 100644 --- a/app/src/main/res/values-sc/strings.xml +++ b/app/src/main/res/values-sc/strings.xml @@ -633,7 +633,6 @@ \nCheres bogare s\'iscritzione a custu canale\? Carrigamentu de su flussu pro \'%s\' fallidu. Errore carrighende su flussu - Su \'Storage Access Framework\' no est suportadu in Android KitKat e versiones prus betzas T\'at a bènnere pedidu in ue sarvare cada documentu Non b\'at galu peruna cartella de iscarrigamentu impostada. Issèbera como sa cartella de iscarrigamentu predefinida Istudadu diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index bfba46a5cd4..4645fcfffa3 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -643,7 +643,6 @@ Nemožno načítať informačný kanál \'%s\'. Chyba pri načítaní kanála \'Storage Access Framework\' je podporovaný len od Androidu 10 a vyššie - \'Storage Access Framework\' nie je podporovaný v systéme Android KitKat a ani v starších verziách Pri každom sťahovaní sa zobrazí výzva kam uložiť súbor Nie je nastavený adresár na sťahovanie, nastavte ho teraz Označiť ako videné diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml index f8be2c8a5cf..d12b1e4d4f2 100644 --- a/app/src/main/res/values-so/strings.xml +++ b/app/src/main/res/values-so/strings.xml @@ -633,7 +633,6 @@ Lama soo kicin karo bandhigga: \'%s\'. Khalad ayaa ka dhacay sookicintii Laga bilaabo Android 10 kaliya waxaa la isticmaali \'SAF\' - \'SAF\' kuma shaqeeyo Android KitKat iyo wixii ka hooseeya Dajin walba meeshii lagu kaydin lahaa ayaa lagu waydiin Iska xidh kala-leexinta muuqaalada/dhagaysiga hadaad lakulanto shaashad madow ama muuqaalka oo isistaaga Xidh kala-leexinta diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index c5b016dd498..74d89908bc2 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -626,7 +626,6 @@ Nuk u arrit të ngarkohej feed-i për \'%s\'. Gabim gjatë ngarkimit të feed-it Duke nisur nga Android 10 vetëm \'Storage Access Framework\' është i mbështetur - \'Storage Access Framework\' nuk është e mbështetur në Android KitKat dhe më poshtë Ju do të pyeteni se ku doni të ruani çdo shkarkim Rrëzoje aplikacionin manualisht Ç\'aktivizo tunelin e medias nëse po hasni një ekran të zi apo ngecje gjatë luajtjes së një videoje diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 68981868c04..26c3e896fa9 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -642,7 +642,6 @@ Не могу да учитам довод за „%s“. Грешка учитавања довода Од Андроида 10 само „Storage Access Framework“ је подржан - „Storage Access Framework“ није подржан на Андроиду 4.4 и старијим Питаће вас где да сачувате свако преузимање Фасцикла за преузимање није одређена. Изаберите подразумевану фасциклу искљ diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 53cd6909b83..edcc13b08c2 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -633,7 +633,6 @@ Visa sedda objekt Det snabba flödesläget ger inte mer information om detta. Fel vid inläsning av flödet - \"Storage Access Framework\" är inte tillgängligt på Android KitKat och tidigare versioner Markera som sedd Ej listad Aktuellt diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 512790f7c47..0986fd74b48 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -633,7 +633,6 @@ \'%s\' için besleme yüklenemedi. Besleme yüklenirken hata \'Depolama Erişimi Çerçevesi\' yalnızca Android 10\'dan başlayarak desteklenmektedir - \'Depolama Erişimi Çerçevesi\' Android KitKat ve altında desteklenmez Her indirmede nereye kaydedileceği sorulacak İndirme klasörü belirlenmedi, şimdi öntanımlı indirme klasörünü seçin Kapat diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 50e1b00b7a1..736a49c8e6c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -620,7 +620,6 @@ Вимкнення тунелювання медіаданих за наявності чорного екрана або гальмування під час відтворення відео Вимкнути тунелювання медіа «Фреймворк доступу до сховища» (SAF) підтримується лише починаючи з Android 10 - «Фреймворк доступу до сховища» (SAF) не підтримується в KitKat і нижче Вас питатиме, куди зберігати кожне завантаження Не вказано теки завантаження, оберіть типову теку завантаження зараз Відкрити вебсайт diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml deleted file mode 100644 index 8fa00d0d8cb..00000000000 --- a/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 658c96b55b2..2346a4cf9d1 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -627,7 +627,6 @@ Không thể tải nguồn dữ liệu cho \'%s\'. Lỗi khi tải nguồn dữ liệu \'Storage Access Framework\' chỉ được hỗ trợ từ Android 10 trở đi - \'Storage Access Framework\' không được hỗ trợ trên Android KitKat và cũ hơn Bạn sẽ được hỏi nơi bạn muốn lưu mỗi mục tải xuống Chưa có thư mục tải xuống nào được đặt, hãy chọn thư mục tải xuống mặc định ngay Không hiện diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b3642829ce7..3c307f195ec 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -623,7 +623,6 @@ 无法加载“%s”的 Feed。 加载 Feed 时出错 仅 Android 10 及以上版本支持“存储访问框架” - Android KitKat 及更低版本不支持“存储访问框架” 你会被问到在哪里保存每个下载 尚未设置下载文件夹,现在选择默认下载文件夹 平板模式 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 399282f7cfa..9b142a7470a 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -563,7 +563,6 @@ 預設開啟內容嘅時候做咩好 — %s 脫鈎 (聲音可能會失真) 飛前一格 - Android KitKat 以及樓下唔支援「儲存空間存取框架」 未有收起嘅播放清單 照單全播 未有頻道訂閱 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index db6caf56de0..47117ee90b2 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -623,7 +623,6 @@ 無法載入「%s」。 載入 feed 時發生錯誤 從 Android 10 開始僅支援「儲存空間存取框架」 - Android KitKat 或更舊的版本不支援「儲存空間存取框架」 每次下載都會詢問您要下載到哪裡 尚未設定下載資料夾,立刻選擇預設的下載資料夾 關閉 diff --git a/app/src/main/res/values/colors_services.xml b/app/src/main/res/values/colors_services.xml index d6cd73d5210..f3487810ac0 100644 --- a/app/src/main/res/values/colors_services.xml +++ b/app/src/main/res/values/colors_services.xml @@ -2,53 +2,37 @@ #e53935 - #992722 #000000 - #e53935 #992722 - #7a1717 #FFFFFF - #992722 #f57c00 - #995700 #000000 - #f57c00 #a35300 - #7d4000 #FFFFFF - #a35300 #ff6f00 - #c43e00 #000000 - #ff6f00 #a34700 - #942f00 #FFFFFF - #a34700 #9e9e9e #000000 - #9e9e9e #878787 #FFFFFF - #878787 #17a0c4 #000000 - #17a0c4 #1383a1 #FFFFFF - #1383a1 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cedb01b207e..b742f251712 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -615,7 +615,6 @@ You will be asked where to save each download Use system folder picker (SAF) The \'Storage Access Framework\' allows downloads to an external SD card - The \'Storage Access Framework\' is not supported on Android KitKat and below Starting from Android 10 only \'Storage Access Framework\' is supported Choose an instance App language diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e711b35ab2c..164f1067224 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,27 +1,29 @@ - + + - - - - diff --git a/app/src/main/res/values/styles_services.xml b/app/src/main/res/values/styles_services.xml index ce67f468b49..db1fba397f5 100644 --- a/app/src/main/res/values/styles_services.xml +++ b/app/src/main/res/values/styles_services.xml @@ -1,16 +1,22 @@ - - - diff --git a/app/src/main/res/xml/download_settings.xml b/app/src/main/res/xml/download_settings.xml index fa15af40685..48e7bbd2e87 100644 --- a/app/src/main/res/xml/download_settings.xml +++ b/app/src/main/res/xml/download_settings.xml @@ -12,6 +12,7 @@ app:iconSpaceReserved="false" />