2012-04-06 8 views
1

Ich habe einen Hintergrunddienst geschrieben, der die Sicherheitsrichtlinien meines Kunden auf Unternehmensgeräten erzwingt. Wenn der Dienst zum ersten Mal installiert wird, starte ich eine Aktivität, damit die ersten Einrichtungsdaten eingegeben werden können. Danach, ich deaktivieren Sie die Aktivität:Wie kann Android's Home Launcher aktualisiert werden?

ComponentName componentToDisable = new ComponentName("com.acme.background","com.acme.background.FirstLaunch"); 
        getPackageManager().setComponentEnabledSetting(componentToDisable,  PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 
FirstLaunch.this.finish(); 

An diesem Punkt ist das temporäre Symbol noch sichtbar, bis der Start Launcher aktualisiert/neu gestartet wird. Das kann bei einigen Geräten ziemlich lange dauern, und das Problem, das ich habe, ist, dass Benutzer verwirrt und über das Symbol deinstalliert werden. Ich muss den Home Launcher aktualisieren. Hier ist eine Methode, die ich über Reflektion ausprobiert habe. Sie gibt mir den aktuellen Start-Launcher und Zugang zu seinen Methoden.

PackageManager PM = getPackageManager(); 
        Intent home_intent = new Intent("android.intent.action.MAIN"); 
        home_intent.addCategory("android.intent.category.HOME"); 
        home_intent.addCategory("android.intent.category.DEFAULT"); 
        ComponentName cn = home_intent.resolveActivity(PM); 
        Context foreignContext = createPackageContext("com.android.launcher", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); 
        String clName = cn.getClassName(); 
        Class<?> test = foreignContext.getClassLoader().loadClass(clName); 

Ich habe Brennen Methoden ausprobiert und auch nulling Felder ein Refresh/Neustart zu bekommen, aber es scheint nicht zu funktionieren. Hat jemand eine Lösung um den appDrawer/Icons zu aktualisieren?

EDIT:

Ich habe Code enthalten, die ich starten, nachdem ein Dialog ausgelöst wird. Unten ist, was ich benutze:

Antwort

0

Leider können Sie das nicht tun - Sie müssen warten, bis der Launcher vom Benutzer neu gestartet wird.

Ein üblicher Weg, um damit umzugehen, ist ein Toast/Dialog zu zeigen, sobald das Icon "entfernt" wurde und der Benutzer den Launcher neu starten muss, damit das Icon vollständig entfernt wird.

+0

Sieht aus, als ob Sie richtig sind. Danke für die Antwort, ich werde meine Frage mit Code aktualisieren, wenn jemand es braucht. – ThumbsDP

Verwandte Themen