до Android 14, используя action_boot_completed.
Код: Выделить всё
class BootReceiver : BroadcastReceiver() {
@SuppressLint("UnsafeProtectedBroadcastReceiver")
@UiThread
override fun onReceive(context: Context, intent: Intent) {
...
Код: Выделить всё
...
кажется, что на Android 15 вы получаете это намерение для различных других случаев, таких как от Android Studio, и даже если вы запускаете и начинаете приложение через экран App-info. />https://issuetracker.google.com/issues/381281328
то, что я нашел
Мой план состоял в />https://developer.android.com/reference ... teLiteleer(java.util.concurrent.executor,%20java.util.function.consumer%3Candroid.app.ApplicationStartArtArtionStartInfO 3. Это:
https://developer.android.com/reference ... )образное/> и если это start_reason_boot_complete, это действительно загрузка.
Код: Выделить всё
inline fun Context.getSystemServiceCompat(): T =
ContextCompat.getSystemService(applicationContext, T::class.java)!!
...
val activityManager: ActivityManager = context.getSystemServiceCompat()
activityManager.addApplicationStartInfoCompletionListener(ExecutorEx.diskIO) { applicationStartInfo ->
val reasonStr = when (val reason = applicationStartInfo.reason) {
ApplicationStartInfo.START_REASON_ALARM -> "START_REASON_ALARM"
ApplicationStartInfo.START_REASON_BACKUP -> "START_REASON_BACKUP"
ApplicationStartInfo.START_REASON_BOOT_COMPLETE -> "START_REASON_BOOT_COMPLETE"
ApplicationStartInfo.START_REASON_BROADCAST -> "START_REASON_BROADCAST"
ApplicationStartInfo.START_REASON_CONTENT_PROVIDER -> "START_REASON_CONTENT_PROVIDER"
ApplicationStartInfo.START_REASON_JOB -> "START_REASON_JOB"
ApplicationStartInfo.START_REASON_LAUNCHER -> "START_REASON_LAUNCHER"
ApplicationStartInfo.START_REASON_LAUNCHER_RECENTS -> "START_REASON_LAUNCHER_RECENTS"
ApplicationStartInfo.START_REASON_OTHER -> "START_REASON_OTHER"
ApplicationStartInfo.START_REASON_PUSH -> "START_REASON_PUSH"
ApplicationStartInfo.START_REASON_SERVICE -> "START_REASON_SERVICE"
ApplicationStartInfo.START_REASON_START_ACTIVITY -> "START_REASON_START_ACTIVITY"
else -> {
logException("unknown applicationStartInfo reason:$reason")
"Unknown:$reason"
}
}
Log.d("AppLog", "reasonStr:$reasonStr")
Не говоря уже о том, что это происходит через обратный вызов, не непосредственно в классе BootReceiver , в on -receive ...
я также проверял оба кейса (флага), и я также проверял наполнения, и есть на самом деле, и это на самом деле, и есть на самом деле, и . Разное: < /p>
Для фальшивой загрузки (что означает просто запуск приложения), флаги - 0x9000030 < /li>
Для реальной загрузки флаги 0x89000010 < /li>
< /ul>
< /h2>
Надежный способ обнаружения реальной загрузки, особенно в классе BootReceiver , который я создал, на Android 15?>
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-broken-o
Мобильная версия