diff --git a/app/build.gradle b/app/build.gradle index e484b628f..4d731900c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,7 @@ android { defaultConfig { applicationId "com.fongmi.android.tv" minSdk 24 - //noinspection ExpiredTargetSdkVersion - targetSdk 28 + targetSdk 36 versionCode 417 versionName "4.1.7" javaCompileOptions { diff --git a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java index dc817de3f..2180e1dfd 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java +++ b/app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java @@ -5,9 +5,6 @@ import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.Network; -import android.net.NetworkCapabilities; -import android.net.NetworkRequest; -import android.os.Build; import androidx.annotation.NonNull; @@ -22,9 +19,7 @@ public class BootReceiver extends BroadcastReceiver { } private void registerCallback() { - ConnectivityManager manager = (ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) manager.registerDefaultNetworkCallback(new Callback()); - else manager.registerNetworkCallback(new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), new Callback()); + ((ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE)).registerDefaultNetworkCallback(new Callback()); } static class Callback extends ConnectivityManager.NetworkCallback { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 441b38323..1f64e4b7c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -40,6 +40,7 @@ import com.fongmi.android.tv.event.CastEvent; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.event.ServerEvent; import com.fongmi.android.tv.impl.Callback; +import com.fongmi.android.tv.impl.ChainTask; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.Source; import com.fongmi.android.tv.server.Server; @@ -61,6 +62,7 @@ import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.net.OkHttp; import com.google.common.collect.Lists; +import com.permissionx.guolindev.PermissionX; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -100,6 +102,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen Updater.create().release().start(this); mResult = Result.empty(); Server.get().start(); + requestPermission(); setRecyclerView(); setViewModel(); setAdapter(); @@ -131,6 +134,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } } + private void requestPermission() { + PermissionX.init(this).permissions(PermissionX.permission.POST_NOTIFICATIONS).request((allGranted, grantedList, deniedList) -> PermissionX.init(this).permissions(PermissionX.permission.POST_NOTIFICATIONS).requestManageExternalStoragePermissionNow(new ChainTask())); + } + private void setRecyclerView() { CustomSelector selector = new CustomSelector(); selector.addPresenter(Integer.class, new HeaderPresenter()); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3dc6c72a6..e61b451f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + diff --git a/app/src/main/java/com/fongmi/android/tv/impl/ChainTask.java b/app/src/main/java/com/fongmi/android/tv/impl/ChainTask.java new file mode 100644 index 000000000..1927ffe1e --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/impl/ChainTask.java @@ -0,0 +1,31 @@ +package com.fongmi.android.tv.impl; + +import com.permissionx.guolindev.request.ExplainScope; +import com.permissionx.guolindev.request.ForwardScope; + +import java.util.List; + +public class ChainTask implements com.permissionx.guolindev.request.ChainTask { + + @Override + public ExplainScope getExplainScope() { + return null; + } + + @Override + public ForwardScope getForwardScope() { + return null; + } + + @Override + public void request() { + } + + @Override + public void requestAgain(List permissions) { + } + + @Override + public void finish() { + } +} diff --git a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java index 235c16491..9d6768670 100644 --- a/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java +++ b/app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java @@ -67,8 +67,8 @@ public class PlaybackService extends Service { } private NotificationCompat.Action getPlayPauseAction() { - if (nonNull() && player.isPlaying()) return buildNotificationAction(R.drawable.ic_notify_pause, androidx.media3.ui.R.string.exo_controls_pause_description, ActionEvent.PAUSE); - return buildNotificationAction(R.drawable.ic_notify_play, androidx.media3.ui.R.string.exo_controls_play_description, ActionEvent.PLAY); + if (nonNull() && player.isPlaying()) return buildNotificationAction(androidx.media3.ui.R.drawable.exo_icon_pause, androidx.media3.ui.R.string.exo_controls_pause_description, ActionEvent.PAUSE); + return buildNotificationAction(androidx.media3.ui.R.drawable.exo_icon_play, androidx.media3.ui.R.string.exo_controls_play_description, ActionEvent.PLAY); } private MediaMetadataCompat getMetadata() { @@ -97,9 +97,9 @@ public class PlaybackService extends Service { } private void addAction(NotificationCompat.Builder builder) { - builder.addAction(buildNotificationAction(R.drawable.ic_notify_prev, androidx.media3.ui.R.string.exo_controls_previous_description, ActionEvent.PREV)); + builder.addAction(buildNotificationAction(androidx.media3.ui.R.drawable.exo_icon_previous, androidx.media3.ui.R.string.exo_controls_previous_description, ActionEvent.PREV)); builder.addAction(getPlayPauseAction()); - builder.addAction(buildNotificationAction(R.drawable.ic_notify_next, androidx.media3.ui.R.string.exo_controls_next_description, ActionEvent.NEXT)); + builder.addAction(buildNotificationAction(androidx.media3.ui.R.drawable.exo_icon_next, androidx.media3.ui.R.string.exo_controls_next_description, ActionEvent.NEXT)); } private Notification buildNotification() { @@ -113,7 +113,7 @@ public class PlaybackService extends Service { builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC); builder.setDeleteIntent(ActionReceiver.getPendingIntent(this, ActionEvent.STOP)); if (nonNull()) builder.setContentIntent(player.getSession().getController().getSessionActivity()); - if (nonNull()) builder.setStyle(new MediaStyle().setMediaSession(player.getSession().getSessionToken())); + if (nonNull()) builder.setStyle(new MediaStyle().setMediaSession(player.getSession().getSessionToken()).setShowActionsInCompactView(0, 1, 2)); addAction(builder); setArtwork(builder); return builder.build(); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Notify.java b/app/src/main/java/com/fongmi/android/tv/utils/Notify.java index b58717cda..2f5b73e98 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Notify.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Notify.java @@ -9,9 +9,9 @@ import android.view.LayoutInflater; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; -import androidx.core.app.ActivityCompat; import androidx.core.app.NotificationChannelCompat; import androidx.core.app.NotificationManagerCompat; +import androidx.core.content.ContextCompat; import com.fongmi.android.tv.App; import com.fongmi.android.tv.databinding.ViewProgressBinding; @@ -43,7 +43,7 @@ public class Notify { } public static void show(Notification notification) { - if (ActivityCompat.checkSelfPermission(App.get(), Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) return; + if (ContextCompat.checkSelfPermission(App.get(), Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) return; NotificationManagerCompat.from(App.get()).notify(ID, notification); } diff --git a/app/src/main/res/drawable/ic_notify_next.xml b/app/src/main/res/drawable/ic_notify_next.xml deleted file mode 100644 index f44de622f..000000000 --- a/app/src/main/res/drawable/ic_notify_next.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_notify_pause.xml b/app/src/main/res/drawable/ic_notify_pause.xml deleted file mode 100644 index ec16b1473..000000000 --- a/app/src/main/res/drawable/ic_notify_pause.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_notify_play.xml b/app/src/main/res/drawable/ic_notify_play.xml deleted file mode 100644 index d91feabb2..000000000 --- a/app/src/main/res/drawable/ic_notify_play.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_notify_prev.xml b/app/src/main/res/drawable/ic_notify_prev.xml deleted file mode 100644 index 11f1b62bb..000000000 --- a/app/src/main/res/drawable/ic_notify_prev.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/mobile/AndroidManifest.xml b/app/src/mobile/AndroidManifest.xml index ad60c4e40..5cf9f767c 100644 --- a/app/src/mobile/AndroidManifest.xml +++ b/app/src/mobile/AndroidManifest.xml @@ -113,7 +113,7 @@ android:resizeableActivity="true" android:screenOrientation="fullUser" android:supportsPictureInPicture="true" - android:theme="@style/AppTheme.Detail" /> + android:theme="@style/AppTheme.Video" /> PermissionX.init(this).permissions(PermissionX.permission.POST_NOTIFICATIONS).requestManageExternalStoragePermissionNow(new ChainTask())); + } + private void initConfig() { WallConfig.get().init(); LiveConfig.get().init().load(); diff --git a/app/src/mobile/res/values/styles.xml b/app/src/mobile/res/values/styles.xml index 6d8a035bc..ef1731e87 100644 --- a/app/src/mobile/res/values/styles.xml +++ b/app/src/mobile/res/values/styles.xml @@ -8,7 +8,7 @@ @color/black - diff --git a/catvod/build.gradle b/catvod/build.gradle index 83bf4e140..9947ba827 100644 --- a/catvod/build.gradle +++ b/catvod/build.gradle @@ -11,7 +11,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 } compileOptions { diff --git a/chaquo/build.gradle b/chaquo/build.gradle index 3128328fd..f9c535b73 100644 --- a/chaquo/build.gradle +++ b/chaquo/build.gradle @@ -12,7 +12,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 python { version "3.8" pip { diff --git a/forcetech/build.gradle b/forcetech/build.gradle index 6bab8796f..9068ea7c8 100644 --- a/forcetech/build.gradle +++ b/forcetech/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 ndk { abiFilters "armeabi-v7a" } } } diff --git a/hook/build.gradle b/hook/build.gradle index 551420393..b1adab699 100644 --- a/hook/build.gradle +++ b/hook/build.gradle @@ -9,6 +9,6 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 } } \ No newline at end of file diff --git a/jianpian/build.gradle b/jianpian/build.gradle index 4e7331f73..97c3e0099 100644 --- a/jianpian/build.gradle +++ b/jianpian/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 } } diff --git a/quickjs/build.gradle b/quickjs/build.gradle index 3073fc0b6..ffc679ef2 100644 --- a/quickjs/build.gradle +++ b/quickjs/build.gradle @@ -11,7 +11,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 } compileOptions { diff --git a/thunder/build.gradle b/thunder/build.gradle index c1633e0e2..1ffff8a94 100644 --- a/thunder/build.gradle +++ b/thunder/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 } } diff --git a/tvbus/build.gradle b/tvbus/build.gradle index 42adc26ac..68b27fab1 100644 --- a/tvbus/build.gradle +++ b/tvbus/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 ndk { abiFilters "armeabi-v7a" } } } diff --git a/zlive/build.gradle b/zlive/build.gradle index 1fe6481d1..ca11b9c65 100644 --- a/zlive/build.gradle +++ b/zlive/build.gradle @@ -9,7 +9,7 @@ android { defaultConfig { minSdk 24 - targetSdk 28 + targetSdk 36 ndk { abiFilters "armeabi-v7a" } } }