onNewIntent 调用时机
- 需要在清单文件中将启动Activity设置为单任务模式
android:launchmode="singleTask" - 在单任务模式下, 如果是首次创建Activity, 则可以通过getIntent获取传入的Intent, 如果Activity已被创建, 则onNewIntent方法会被调用. 也就是说首次创建不会调onNewIntent方法…
SystemUI显示fileprovider提供的封面图时崩溃
系统日志如下:
注意是SystemUI崩了, 所以只抓自己app的log是抓不到的
2025-06-21 02:51:34.819 2028-2079 HwNotifica...rServiceEx system_server W isBanNotification control information formats is invalid !
2025-06-21 02:51:34.819 28944-28976 AndroidRuntime com.android.systemui E FATAL EXCEPTION: SysUiBg
Process: com.android.systemui, PID: 28944
java.lang.SecurityException: Permission Denial: opening provider androidx.core.content.FileProvider from ProcessRecord{337d42a 28944:com.android.systemui/u0a74} (pid=28944, uid=10074) that is not exported from UID 10200
at android.os.Parcel.createExceptionOrNull(Parcel.java:2465)
at android.os.Parcel.createException(Parcel.java:2449)
at android.os.Parcel.readException(Parcel.java:2432)
at android.os.Parcel.readException(Parcel.java:2374)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:6242)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:9150)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:3666)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:2630)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2088)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2042)
at android.graphics.ImageDecoder$ContentResolverSource.createImageDecoder(ImageDecoder.java:266)
at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1870)
at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1863)
at com.android.systemui.media.MediaDataManager.m(Unknown Source:57)
at com.android.systemui.media.MediaDataManager.l(Unknown Source:31)
at com.android.systemui.media.MediaDataManager.p(Unknown Source:58)
at com.android.systemui.media.MediaDataManager.c(Unknown Source:0)
at com.android.systemui.media.MediaDataManager$c.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:966)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:293)
at android.os.HandlerThread.run(HandlerThread.java:110)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ContentProviderHelper.checkAssociationAndPermissionLocked(ContentProviderHelper.java:716)
at com.android.server.am.ContentProviderHelper.getContentProviderImpl(ContentProviderHelper.java:270)
at com.android.server.am.ContentProviderHelper.getContentProvider(ContentProviderHelper.java:132)
at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:7085)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2611)
callee: null 2028/8702
是没给systemui授予uri读权限导致的, 详见:
https://github.com/rachel-ylcs/ylcs-kmp/issues/133
https://github.com/PaulWoitaschek/Voice/issues/1860
获取uri后给systemui权限就行, 示例代码如下:
/**
* These are necessary to grant the cover uri file permissions.
* systemui is related to this one:
* https://github.com/PaulWoitaschek/Voice/issues/1860
*
* The others are related to watch and car
* https://github.com/android/uamp/blob/2136c37bcef54da1ee350fd642fc61a744e86654/common/src/main/res/xml/allowed_media_browser_callers.xml
*/
listOf(
"com.android.systemui",
"com.google.android.autosimulator",
"com.google.android.carassistant",
"com.google.android.googlequicksearchbox",
"com.google.android.projection.gearhead",
"com.google.android.wearable.app",
).forEach { grantedPackage ->
application.grantUriPermission(
grantedPackage,
uri,
Intent.FLAG_GRANT_READ_URI_PERMISSION,
)
}
无法收到UDP组播数据
- 需要获取组播锁
WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock = manager.createMulticastLock("锁名称"); lock.acquire(); // 获取锁 lock.release(); // 释放锁 - Android上的UDP组播Socket必须手动绑定接口才能从指定的接口接收组播数据,纯血鸿蒙也存在此问题,一般绑定到wlan0即可
后续的有时间再补充
这玩意为啥能出到第五期的, 谁的问题