mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Fix and simplify
This commit is contained in:
parent
9933b5adbe
commit
b672f2f427
4 changed files with 24 additions and 45 deletions
|
@ -61,7 +61,9 @@
|
|||
android:exported="true"
|
||||
android:resizeableActivity="true"
|
||||
android:screenOrientation="userLandscape"
|
||||
android:supportsPictureInPicture="true">
|
||||
android:supportsPictureInPicture="true"
|
||||
android:taskAffinity="com.lagradost.cloudstream3.downloadedplayer"
|
||||
android:launchMode="singleTask">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
|
|
|
@ -64,34 +64,10 @@ object CommonActivity {
|
|||
private set(value) {
|
||||
_activity = WeakReference(value)
|
||||
}
|
||||
private val activeActivities = mutableListOf<WeakReference<Activity>>() // Keep track of active activities
|
||||
|
||||
@MainThread
|
||||
fun registerActivity(activity: Activity) {
|
||||
activeActivities.add(WeakReference(activity))
|
||||
}
|
||||
|
||||
@MainThread
|
||||
fun unregisterActivity(activity: Activity) {
|
||||
val iterator = activeActivities.iterator()
|
||||
while (iterator.hasNext()) {
|
||||
val weakReference = iterator.next()
|
||||
val storedActivity = weakReference.get()
|
||||
if (storedActivity == null || storedActivity == activity) {
|
||||
iterator.remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@MainThread
|
||||
fun getCurrentActivity(): Activity? {
|
||||
for (weakReference in activeActivities) {
|
||||
val activity = weakReference.get()
|
||||
if (activity != null && !activity.isFinishing) {
|
||||
return activity
|
||||
}
|
||||
}
|
||||
return null
|
||||
fun setActivityInstance(newActivity: Activity?) {
|
||||
activity = newActivity
|
||||
}
|
||||
|
||||
@MainThread
|
||||
|
@ -232,24 +208,25 @@ object CommonActivity {
|
|||
setLocale(this, localeCode)
|
||||
}
|
||||
|
||||
fun init() {
|
||||
val act = getCurrentActivity() as? ComponentActivity ?: return
|
||||
fun init(act: Activity) {
|
||||
setActivityInstance(act)
|
||||
|
||||
val componentActivity = activity as? ComponentActivity ?: return
|
||||
|
||||
activity = act
|
||||
//https://stackoverflow.com/questions/52594181/how-to-know-if-user-has-disabled-picture-in-picture-feature-permission
|
||||
//https://developer.android.com/guide/topics/ui/picture-in-picture
|
||||
canShowPipMode =
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && // OS SUPPORT
|
||||
act.packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) && // HAS FEATURE, MIGHT BE BLOCKED DUE TO POWER DRAIN
|
||||
act.hasPIPPermission() // CHECK IF FEATURE IS ENABLED IN SETTINGS
|
||||
componentActivity.packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) && // HAS FEATURE, MIGHT BE BLOCKED DUE TO POWER DRAIN
|
||||
componentActivity.hasPIPPermission() // CHECK IF FEATURE IS ENABLED IN SETTINGS
|
||||
|
||||
act.updateLocale()
|
||||
act.updateTv()
|
||||
componentActivity.updateLocale()
|
||||
componentActivity.updateTv()
|
||||
NewPipe.init(DownloaderTestImpl.getInstance())
|
||||
|
||||
for (resumeApp in resumeApps) {
|
||||
resumeApp.launcher =
|
||||
act.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
||||
componentActivity.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
||||
val resultCode = result.resultCode
|
||||
val data = result.data
|
||||
if (resultCode == AppCompatActivity.RESULT_OK && data != null && resumeApp.position != null && resumeApp.duration != null) {
|
||||
|
@ -266,11 +243,11 @@ object CommonActivity {
|
|||
// Ask for notification permissions on Android 13
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU &&
|
||||
ContextCompat.checkSelfPermission(
|
||||
act,
|
||||
componentActivity,
|
||||
Manifest.permission.POST_NOTIFICATIONS
|
||||
) != PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
val requestPermissionLauncher = act.registerForActivityResult(
|
||||
val requestPermissionLauncher = componentActivity.registerForActivityResult(
|
||||
ActivityResultContracts.RequestPermission()
|
||||
) { isGranted: Boolean ->
|
||||
Log.d(TAG, "Notification permission: $isGranted")
|
||||
|
|
|
@ -67,6 +67,7 @@ import com.lagradost.cloudstream3.CommonActivity.onColorSelectedEvent
|
|||
import com.lagradost.cloudstream3.CommonActivity.onDialogDismissedEvent
|
||||
import com.lagradost.cloudstream3.CommonActivity.onUserLeaveHint
|
||||
import com.lagradost.cloudstream3.CommonActivity.screenHeight
|
||||
import com.lagradost.cloudstream3.CommonActivity.setActivityInstance
|
||||
import com.lagradost.cloudstream3.CommonActivity.showToast
|
||||
import com.lagradost.cloudstream3.CommonActivity.updateLocale
|
||||
import com.lagradost.cloudstream3.databinding.ActivityMainBinding
|
||||
|
@ -590,6 +591,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
|||
override fun onResume() {
|
||||
super.onResume()
|
||||
afterPluginsLoadedEvent += ::onAllPluginsLoaded
|
||||
setActivityInstance(this)
|
||||
try {
|
||||
if (isCastApiAvailable()) {
|
||||
//mCastSession = mSessionManager.currentCastSession
|
||||
|
@ -681,7 +683,6 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
|||
broadcastIntent.setClass(this, VideoDownloadRestartReceiver::class.java)
|
||||
this.sendBroadcast(broadcastIntent)
|
||||
afterPluginsLoadedEvent -= ::onAllPluginsLoaded
|
||||
CommonActivity.unregisterActivity(this)
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
@ -1370,8 +1371,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
|||
|
||||
// val navView: BottomNavigationView = findViewById(R.id.nav_view)
|
||||
setUpBackup()
|
||||
CommonActivity.registerActivity(this)
|
||||
CommonActivity.init()
|
||||
|
||||
CommonActivity.init(this)
|
||||
val navHostFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||
val navController = navHostFragment.navController
|
||||
|
|
|
@ -74,8 +74,7 @@ class DownloadedPlayerActivity : AppCompatActivity() {
|
|||
|
||||
CommonActivity.loadThemes(this)
|
||||
super.onCreate(savedInstanceState)
|
||||
CommonActivity.registerActivity(this)
|
||||
CommonActivity.init()
|
||||
CommonActivity.init(this)
|
||||
|
||||
setContentView(R.layout.empty_layout)
|
||||
|
||||
|
@ -112,8 +111,8 @@ class DownloadedPlayerActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
CommonActivity.unregisterActivity(this)
|
||||
super.onDestroy()
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
CommonActivity.setActivityInstance(this)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue