Skip to content

Add MANAGE_CLOUD_MEDIA_PROVIDERS permission for cloud media providers (Immich)#1320

Open
marx161-cmd wants to merge 957 commits into
crdroidandroid:16.0from
marx161-cmd:patch/add-cloud-media-provider-permission
Open

Add MANAGE_CLOUD_MEDIA_PROVIDERS permission for cloud media providers (Immich)#1320
marx161-cmd wants to merge 957 commits into
crdroidandroid:16.0from
marx161-cmd:patch/add-cloud-media-provider-permission

Conversation

@marx161-cmd

Copy link
Copy Markdown

This patch declares the missing android.permission.MANAGE_CLOUD_MEDIA_PROVIDERS permission that's required for apps like Immich to act as cloud media providers on Android 16.

Changes

core/res/AndroidManifest.xml

  • Adds the MANAGE_CLOUD_MEDIA_PROVIDERS permission declaration with signature|privileged protection level, placed alongside the existing MANAGE_MEDIA permission.

data/etc/privapp-permissions-platform.xml

  • Adds an allowlist entry for Immich (app.alextran.immich) so it can hold the MANAGE_CLOUD_MEDIA_PROVIDERS permission when installed as a privileged app or granted via root.

Context

The CloudMediaProvider implementation already exists in AOSP's android_packages_providers_MediaProvider (pulled from LineageOS). The only missing piece is the permission declaration itself. This benefits every crDroid user running Immich or any other cloud media provider app.

rmp22 and others added 30 commits June 5, 2026 21:48
Change-Id: Icd07fc5b5d64714b5aef10b1237f5ec5a3756462
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Who in their right mind thought making the notifications in landscape mode small was a good idea?

Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Allow proceeding if directory exists despite locked CE storage.

Fixes Android/data folder creation on some apps dues to race condition.

02-12 06:42:13.214  2176 17668 W StorageManagerService: Failed to get storage lifetime
02-12 06:42:13.214  2176 17668 I StorageManagerService: Turn off gc_urgent based on checking lifetime and charge status
02-12 06:42:13.214  2176 17668 I StorageManagerService: Set smart idle maintenance: latest write amount: 244, average write amount: 0, min segment threshold: 512, dirty reclaim rate: 0.5, segment reclaim weight: 2.0, period(min): 60, min gc sleep time(ms): 5000, target dirty ratio: 100
02-12 06:51:02.679 18324 18339 W ContextImpl: 	at android.os.storage.IStorageManager$Stub$Proxy.mkdirs(IStorageManager.java:1305)
02-12 06:51:02.679 18324 18339 W ContextImpl: 	at android.os.storage.StorageManager.mkdirs(StorageManager.java:1421)
02-12 06:51:02.679 18324 18339 W ContextImpl: 	at com.android.server.StorageManagerService.mkdirs(StorageManagerService.java:3776)
02-12 06:51:02.679 18324 18339 W ContextImpl: 	at android.os.storage.IStorageManager$Stub.onTransact(IStorageManager.java:648)

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* This also fixes brightness icons not loading correctly on moving slider.
* Image decoder cannot handle vector XML.

Log:

10-23 00:02:52.472 W/ImageLoader(2485): Failed to load source Resource{name=com.android.systemui:drawable/ic_brightness_medium}
10-23 00:02:52.472 W/ImageLoader(2485): android.graphics.ImageDecoder$DecodeException: Failed to create image decoder with message 'unimplemented'Input contained an error.
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder.nCreate(Native Method)
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder.createFromAsset(ImageDecoder.java:548)
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder.-$$Nest$smcreateFromAsset(Unknown Source:0)
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder$ResourceSource.createImageDecoder(ImageDecoder.java:525)
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder.decodeDrawableImpl(ImageDecoder.java:1750)
10-23 00:02:52.472 W/ImageLoader(2485): 	at android.graphics.ImageDecoder.decodeDrawable(ImageDecoder.java:1742)
10-23 00:02:52.472 W/ImageLoader(2485): 	at com.android.systemui.graphics.ImageLoader.loadDrawableSync(go/retraceme fa033e5bae99b59d8477124fa92133edcdefa6c9ebb8507171a3414e8dc9df78:3)
10-23 00:02:52.472 W/ImageLoader(2485): 	at com.android.systemui.graphics.ImageLoader.loadDrawableSync(go/retraceme fa033e5bae99b59d8477124fa92133edcdefa6c9ebb8507171a3414e8dc9df78:19)
10-23 00:02:52.472 W/ImageLoader(2485): 	at com.android.systemui.graphics.ImageLoader$loadDrawable$4.invokeSuspend(go/retraceme fa033e5bae99b59d8477124fa92133edcdefa6c9ebb8507171a3414e8dc9df78:25)
10-23 00:02:52.472 W/ImageLoader(2485): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(go/retraceme fa033e5bae99b59d8477124fa92133edcdefa6c9ebb8507171a3414e8dc9df78:8)
10-23 00:02:52.472 W/ImageLoader(2485): 	at kotlinx.coroutines.DispatchedTask.run(go/retraceme fa033e5bae99b59d8477124fa92133edcdefa6c9ebb8507171a3414e8dc9df78:112)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:524)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.util.concurrent.FutureTask.run(FutureTask.java:317)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:348)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
10-23 00:02:52.472 W/ImageLoader(2485): 	at java.lang.Thread.run(Thread.java:1119)

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Iterating the mutable listeners list during configuration dispatch causes below crash

12-09 21:15:07.361 D/AndroidRuntime(2214): Shutting down VM
12-09 21:15:07.361 E/AndroidRuntime(2214): FATAL EXCEPTION: main
12-09 21:15:07.361 E/AndroidRuntime(2214): Process: com.android.systemui, PID: 2214
12-09 21:15:07.361 E/AndroidRuntime(2214): java.util.ConcurrentModificationException
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1111)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at java.util.ArrayList$Itr.next(ArrayList.java:1064)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at kotlin.collections.CollectionsKt.filterNotNull(Unknown Source:16)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at com.android.systemui.statusbar.phone.ConfigurationControllerImpl.onConfigurationChanged(go/retraceme d43d4e7a8dd5b2e7eba70ac5852a31df7ec95eb6ed6791527c5ce29550f31e4c:30)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at com.android.systemui.SystemUIApplication.onConfigurationChanged(go/retraceme d43d4e7a8dd5b2e7eba70ac5852a31df7ec95eb6ed6791527c5ce29550f31e4c:36)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ConfigurationController.performConfigurationChanged(ConfigurationController.java:261)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ConfigurationController.handleConfigurationChangedInner(ConfigurationController.java:235)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ConfigurationController.handleConfigurationChanged(ConfigurationController.java:154)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ConfigurationController.handleConfigurationChanged(ConfigurationController.java:129)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:6948)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.servertransaction.ConfigurationChangeItem.execute(ConfigurationChangeItem.java:56)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:133)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:103)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:80)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2831)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.os.Handler.dispatchMessage(Handler.java:110)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.os.Looper.dispatchMessage(Looper.java:315)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.os.Looper.loopOnce(Looper.java:251)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.os.Looper.loop(Looper.java:349)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at android.app.ActivityThread.main(ActivityThread.java:9047)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at java.lang.reflect.Method.invoke(Native Method)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:596)
12-09 21:15:07.361 E/AndroidRuntime(2214): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* As listener could be null, apply filterNotNull to avoid it

Log:
12-14 17:58:13.733  3663  3663 E AndroidRuntime: FATAL EXCEPTION: main
12-14 17:58:13.733  3663  3663 E AndroidRuntime: Process: com.android.systemui, PID: 3663
12-14 17:58:13.733  3663  3663 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.systemui.statusbar.policy.ConfigurationController$ConfigurationListener.onConfigChanged(android.content.res.Configuration)' on a null object reference
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.ConfigurationControllerImpl.onConfigurationChanged(ConfigurationControllerImpl.kt:74)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at com.android.systemui.SystemUIApplication.onConfigurationChanged(SystemUIApplication.java:449)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ConfigurationController.performConfigurationChanged(ConfigurationController.java:242)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ConfigurationController.handleConfigurationChanged(ConfigurationController.java:216)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ConfigurationController.handleConfigurationChanged(ConfigurationController.java:128)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:6520)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.servertransaction.ConfigurationChangeItem.execute(ConfigurationChangeItem.java:48)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:231)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:152)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:93)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2595)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:232)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:317)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:8597)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:583)
12-14 17:58:13.733  3663  3663 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)

neobuddy89: Ensure these checks for all listeners and during callbacks.

Change-Id: I1b5197667f7837dcabd67204ae6b764113dbbcce
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I4ea5385caf72336bd8fbc87f85e3e00e85d189d2
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I4f4087b3b379ba60872c92f62bc4107dfce37f7e
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
- Inspired from Lunaris-AOSP/frameworks_base_old@57f26ed

Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Address a bug where complex resources (Styles, arrays, etc) can use
resource references (<item type=...) but at runtime they would not be
found.

When getting a Bag check for the resource being a reference and
recursively resolve the reference.

Added tests to AssetManager2_test which verify the functionality. The 2
alias tests failed prior to the change but pass now.

Bug: 480904335
Test: AssetManager2_test
Change-Id: Ie6b8740558e566056c3a4acbfe9201b3f43bdac8
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: Ib9f9cd63713946004fb0f0e7622de572f1b2431c
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
A malformed event can cause an NPE in
CriticalEventLog.saveLogToFileNow() when
CriticalEventLogStorageProto.toByteArray() calls
computeSerializedSize() on an event with null fields. This leads to a crash system_server and will force a device reboot.

Move the toByteArray() call into the try-with-resources block
and broaden the catch from IOException to Exception so that
any exception during serialization or writing is caught and
logged rather than crashing the system_server.

Bug: None
Test: atest CriticalEventLogTest
Change-Id: I57190fc3245f9f03950f0cf7597fa3d4d2a5b550
Change-Id: I25755bded0e38fb5f43f49e70126ee5d73a2856d
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Test: Screen record notification will flicker on expansion.

Reason: Override tint color was reset on expansion.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I7a4c3b55b073b82beb24d079681b585f93c64f70
Signed-off-by: SuperDroidBond <superdroidbond@yahoo.com>
 It is not necessary to use this for all devices, but only for those
 that have a problem with charging display (for example OnePlus 7 series)

Change-Id: I98441087ec450ec3a2699a1a79b84bc32a1fe340
Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
During the use of makeSceneTransitionAnimation(), two
ExitTransitionCoordinator instances are generated, corresponding to the
activity before the transition and the activity after the transition,
respectively. The activity after the transition is released after
finishing() when finishAfterTransition() is called. However, the
activity before the transition is leaked in ExitTransitionCoordinator
because mExitCallbacks holds it and cannot be released.. We found that
the reason why the activity before the transition cannot reach finish()
is that mIsReturning is always false.Therefore, we modified
finishIfNecessary() to release the activity to avoid the leak.

Change-Id: I795f4c85ebb85a5fb8448738e127f7b07cf8ef35
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
[neobuddy89: Completely remove doze dependencies.]
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Polling every 5 seconds is wasteful. Use MutableStateFlow instead.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
firebird11 and others added 26 commits June 6, 2026 22:04
Use isAttachedToWindow() instead of getWindowToken()
to properly track animation window state and avoid
stale mShowing state causing missing animations on
the keyguard.

Co-authored-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Adjust layout while at it

Fixes: crdroidandroid/issue_tracker#1029
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* This is not required. Layout xml itself should center the clock which we do for most of them.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Ghosuto <clash.raja10@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Fixes: crdroidandroid/issue_tracker#1033
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
If people want to disable this by default you can set the pref.

Change-Id: Iec09847958a23a43ff57374c14d4dcde32364284
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Fix Gmail soft reboot

05-24 23:03:49.023 15207 15362 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: PackageManager
05-24 23:03:49.023 15207 15362 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.android.server.wm.Transition.collectExistenceChange(com.android.server.wm.WindowContainer)' on a null object reference
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.wm.ActionChain.collectClose(ActionChain.java:214)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.wm.ActivityRecord.handleAppDied(ActivityRecord.java:4357)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.wm.WindowProcessController.handleAppDied(WindowProcessController.java:1633)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.wm.ActivityTaskManagerService.handleAppDied(ActivityTaskManagerService.java:7265)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3446)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ProcessList.removeProcessLocked(ProcessList.java:3309)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ProcessList.killPackageProcessesLSP(ProcessList.java:3237)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ProcessList.killPackageProcessesLSP(ProcessList.java:3037)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.BroadcastController.broadcastIntentLockedTraced(BroadcastController.java:1260)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.BroadcastController.broadcastIntentLocked(BroadcastController.java:811)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:17521)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.am.ActivityManagerService.broadcastIntentWithCallback(ActivityManagerService.java:17544)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.broadcastIntent(BroadcastHelper.java:212)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.doSendBroadcast(BroadcastHelper.java:193)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.sendPackageBroadcast(BroadcastHelper.java:139)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.sendPackageChangedBroadcastWithPermissions(BroadcastHelper.java:488)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.sendPackageChangedBroadcastInternal(BroadcastHelper.java:446)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.lambda(BroadcastHelper.java:1003)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.(BroadcastHelper.java:0)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.pm.BroadcastHelper.run(R8:0)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:1070)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:125)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.Looper.dispatchMessage(Looper.java:333)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.Looper.loopOnce(Looper.java:263)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:367)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at android.os.HandlerThread.run(HandlerThread.java:139)
05-24 23:03:49.023 15207 15362 E AndroidRuntime:        at com.android.server.ServiceThread.run(ServiceThread.java:46)

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I8a5b5c27654690b8b14c1023126d273544ada872
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
it's not fair to display NR_NSA same as we display NR_SA

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I38c307a292e4ce84436bbe670c363d8cd5581283
Signed-off-by: kleidione <kleidione@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
The clock only animated its doze amount for AOD <-> LOCKSCREEN, so any
transition through DOZING (e.g. pulsing notifications with AOD off) snapped
the clock between dozed and lockscreen states instead of interpolating.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* Also fix an AudioPlaybackCallback leak when attach fails.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: Ife1978da30fa167bcbec1fc66f138802cf1aef6f
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
* get badged icon for managed user

Change-Id: I52274ff52132e6b0b8a430a2f9ca8ef070458efb
Signed-off-by: someone5678 <59456192+someone5678@users.noreply.github.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Change-Id: I13850be2303d8a6f6aac28e121bc311057a64b98
Co-authored-by: DP <dprietob@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Sasha Glazko <lenify@tutanota.com>
Co-authored-by: vdsvtsl <vdsvtsl@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/calyxos/platform_frameworks_base/be/
Translate-URL: https://hosted.weblate.org/projects/calyxos/platform_frameworks_base/es/
Translate-URL: https://hosted.weblate.org/projects/calyxos/platform_frameworks_base/uk/
Translate-URL: https://hosted.weblate.org/projects/calyxos/platform_frameworks_base_systemui/be/
Translate-URL: https://hosted.weblate.org/projects/calyxos/platform_frameworks_base_systemui/uk/
Translation: CalyxOS/Battery stats
Translation: CalyxOS/SystemUI
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
…e same task

LOCK_BEHAVIOR_ON_LEAVE re-locked an unlocked app whenever focus moved to a
different package. But activities started for a result (e.g. the MediaStore
delete/trash confirmation that Google Photos launches) live in the caller's
own task, so this fired even though the user never left the app, forcing a
second auth prompt on return.

Track the unlocked app's task id and, in onAppFocusChanged, skip the ON_LEAVE
re-lock when focus stays within that same task. The app's tracking is kept
pointing at the real package (not the transient sub-activity) so a genuine
task switch still re-locks correctly.

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
- core/res/AndroidManifest.xml: declare MANAGE_CLOUD_MEDIA_PROVIDERS
  permission with signature|privileged protection level
- data/etc/privapp-permissions-platform.xml: allowlist Immich
  (app.alextran.immich) to hold the new permission

The CloudMediaProvider implementation already exists in AOSP's
MediaProvider (pulled via LineageOS).  The only missing piece was
the permission declaration itself.
@neobuddy89

Copy link
Copy Markdown
Member

I dont see point of elevating this permission. If it is needed by app, add it for the app itself.

@marx161-cmd

Copy link
Copy Markdown
Author

Sorry about that @neobuddy89 — I accidentally included the Immich privapp package along with the permission declaration. I've dropped it from the PR.

The only change left now is the MANAGE_CLOUD_MEDIA_PROVIDERS permission declaration itself in AndroidManifest.xml. This is a signature|privileged permission needed by the CloudMediaProvider implementation that's already in AOSP's MediaProvider (pulled via LineageOS) — it can't be declared by a 3rd party app, so it needs to live here in the framework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.