Frage: Update-Benachrichtigung deaktivieren?

zx128

zx128

Dauergast
157
Hallo Forum,

weiß jemand näheres darüber, wie die Update-Benachrichtigung funktioniert?

Ich will noch nicht auf RC9 updateten und das kleine Update-Fenster gehr mir
lagsam auf die nerven.

Hätte ein Background-Service z.B. die Möglichkeit das Update-Fenster
zumindest mal "wegzuklicken"?

Danke.
 
Ich bin noch Android-SDK-n00b und kann daher nur mit gefaehrlichem Halbwissen zu diesem Thema glaenzen :D

Angenommen du wuerdest die Notification-ID der Update-Benachrichtigung kennen so koenntest du theoretisch via NotificationManager.cancel(id) die Nachricht entfernen. Das scheitert aber vermutlich daran, dass (1) du keinen Zugriff auf die Notifications _anderer_ Applikationen hast (Sicherheit) und (2) laut Doku muessen die IDs nur unique fuer deine Applikation selbst sein (was mich wieder zu Punkt 1 bringt). Hab's selbst noch nicht probiert....

Vielleicht gibt's andere "Angriffspunkte" anstelle einer Notification - z.B. Intents. Dann koenntest Du vielleicht die Benachrichtigung an einem frueheren Punkt abfangen/verhindern. Was sagt denn adb logcat zu solchen Update-Meldungen?

Kann's leider selbst nicht ausprobieren, da ich JF1.43/ADP1.1h laufen habe.

--
Marcus
 
Es sieht so aus:

attachment.php


Hier ist die Logcat-Ausgabe:

I/ActivityManager( 56): Starting activity: Intent { action=android.server.checkin.FOTA_READY flags=0x30000000 comp={com.android.updater/com.android.updater.PesterActivity} (has extras) }
I/PesterActivity( 1747): OTA update available: /cache/signed-TMI-RC9-from-TMI-RC4.c8187210.zip
I/PesterActivity( 1747): Next OTA prompt in 1799 sec
Es wird also eine neue Activity gestartet, keine Notification (mit einer Notification könnte ich noch leben).

Ich hab mal testweise versucht unter "adb shell" mit "kill" die Activity zu beenden - keine Rechte. D.h. eine Android-App wird auch keine Rechte dafür haben.

Beim ActivityManager fand ich dazu nichts nützliches. Abgesehen davon liefert die Methode getRunningTasks nicht alle Tasks. Habe dazu bei android-groups eine Aussage gefunden, dass es im Moment keine High-Level-Apis dafür gibt, man müsse mit ps oder /proc/PID drankommen.

Tja, sieht schlecht aus,
 

Anhänge

  • device.png
    device.png
    25,5 KB · Aufrufe: 1.218
Hast leider recht, umbennen wird nicht klappen - keine Rechte.

Der Ansatz mit IntentFilter scheint interessant, den werde ich mal versuchen.
Selbst wenns icht klappt - dann lerne ich halt was neues ;)
 
Bin am Ergebnis interessiert, einfach wegen OpenIntents.

Vielleicht hilft es im intent-filter die Priorität anzugeben.
 
Results: :mad:

Mein BroadcastReceiver wird nicht aufgerufen.

Ich verstehe jetzt auch wieso, dieses FOTA_READY ist kein Broadcast, wird ja mit
comp={com.android.updater/com.android.updater.PesterActivity}
aufgerufen. Wahrscheinlich mit startActivity(ForResult).

Ich wollte mir schon den Aufruf anschauen, der Logcat deutet auf:
com.android.vending/.PackageMonitorReceiver$UpdateCheckinDatabaseService

Nur finde ich das Ding nicht in Sources. :confused:

Ein "grep -s -r FOTA_READY *" gibt übrigens auch nur PesterActivity.java aus.

Najut, hab was neues gelernt :cool:
 
Sehr interessant - ich dachte die Benachrichtigung waere eine wirkliche notification, ist aber bloß eine Activity.

Diese PesterActivity haelt sich wohl mittels dem AlarmManager selbst am "Leben" - so, dass abhaengig von dem Intent-Extra "promptMinutes" diese Activity in Intervallen erneut aufgerufen wird.

In onNewIntent():
Code:
Intent install = new Intent("android.server.checkin.FOTA_INSTALL", uri);
mInstallIntent = PendingIntent.getBroadcast(this, 0, install, 0);
Theoretisch koenntest du per AlarmManager.cancel und dem mInstallIntent dieses "Aufwecken" abbrechen - allerdings wirst du wahrscheinlich an den Rechten (dein Kontext != PesterActivity-Kontext ?) bzw. dem falschen Context scheitern.

Vielleicht macht es mehr Sinn, diese Activity mittels dem Action
"android.server.checkin.FOTA_READY" aufzurufen und ein wenig mit den
Intent-Extras zu spielen:

- das Extra "promptMinutes" hochsetzen, damit du erstmal Ruhe hast (siehe PesterActivity.getNextPromptMinutes())

- das Extra "updateFile" auf eine nicht existierende Datei verweisen lassen (siehe PesterActivity.onNewIntent()), damit er denkt, dass Update existiert nicht mehr und die Activity - und den Timer - beendet.

Allerdings bin ich mir unsicher in zwei Punkten:

- wenn Du die Activity per Intent selbst aufrufst und via promptMinutes/updateFile den (womoeglich "neuen") Timer verlaengerst/deaktivierst - bleibt der "alte" Timer noch aktiv?
- wer triggert diese Activity? selbst wenn du den Timer deaktiviert kriegst wird diese Activity vielleicht dennoch erneut von einer anderen App erneut gestartet?

Ich habe mit dem AlarmManager noch nie rumgespielt, daher habe ich keine
Ahnung wie er reagiert. Insofern kann der beschriebene Weg vielleicht auch voelliger Humbug sein ;-)

Viel Erfolg :D

--
Marcus
 
Da ich meinen vorigen Beitrag ja nicht editieren kann, hier eine Ergaenzung:
Anstelle mit deinem BroadcastReceiver auf FOTA_READY zu reagieren, versuch doch mal auf "android.server.checkin.FOTA_INSTALL" zu lauschen. Siehe hier auch wieder PesterActivity.java.....

--
Marcus
 
Hallo

Kleine Nachfrage:
Hat jemand schon einen gangbaren Weg gefunden die Update-Benachrichtigung zu deaktivieren?

Danke
 

Ähnliche Themen

netfreak
  • netfreak
Antworten
10
Aufrufe
453
netfreak
netfreak
M
Antworten
2
Aufrufe
626
Mozart40
M
A
Antworten
1
Aufrufe
580
swa00
swa00
Zurück
Oben Unten