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" }
}
}