Как вы можете обнаружить реальную загрузку на Android 15, так как Action_boot_completed на нем сломана?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как вы можете обнаружить реальную загрузку на Android 15, так как Action_boot_completed на нем сломана?

Сообщение Anonymous »

фон
до Android 14, используя action_boot_completed.

Код: Выделить всё

class BootReceiver : BroadcastReceiver() {

@SuppressLint("UnsafeProtectedBroadcastReceiver")
@UiThread
override fun onReceive(context: Context, intent: Intent) {
...
manifest Проблема
кажется, что на 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")
Однако вместо этого значения на загрузке я получил start_reason_broadcast ...
Не говоря уже о том, что это происходит через обратный вызов, не непосредственно в классе BootReceiver , в on -receive ...
я также проверял оба кейса (флага), и я также проверял наполнения, и есть на самом деле, и это на самом деле, и есть на самом деле, и . Разное: < /p>

Для фальшивой загрузки (что означает просто запуск приложения), флаги - 0x9000030 < /li>
Для реальной загрузки флаги 0x89000010 < /li>
< /ul>
< /h2>

< /ul>
< /h2>

< /ul>
. Надежный способ обнаружения реальной загрузки, особенно в классе BootReceiver , который я создал, на Android 15?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-broken-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»