4

Frage: Gibt es eine Möglichkeit, einige der Homescreen-Widgets zu aktivieren, die ich programmgesteuert mit meiner App ausgeben? Zum Beispiel, ein "Premium" -Widget zu haben und Zugang nur nach Bezahlung zu gewähren?Android: App-Widgets programmgesteuert aktivieren/deaktivieren


Als Android docs sagen, sollte man einen Rundfunkempfänger in dem Manifest hinzufügen, dem System zu sagen, dass es ein Widget mit der App kommt, ist: kann Rundfunkempfänger

<receiver android:name="ExampleAppWidgetProvider" > 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
      android:resource="@xml/example_appwidget_info" /> 
</receiver> 

Aber in der Theorie auch programmgesteuert hinzugefügt werden, können die Widgets später zur Laufzeit registriert werden?

Antwort

4

können Sie haben android:enabled="false" auf das <receiver> Element für den App-Widget im Manifest, dann PackageManager und setComponentEnabledSetting() verwenden es zur Laufzeit zu ermöglichen, wenn das der Benutzer etwas (zum Beispiel zahlen).

Es ist jedoch möglich, dass dies einen Neustart erfordert, bevor auf dem Startbildschirm erkannt wird, dass ein neuer potenzieller App-Widget-Provider vorhanden ist.

+0

Danke! Eine kurze Frage dazu: Bedeutet das, dass andere Apps diese Funktion aufrufen können, indem sie meine Empfänger-Komponente angeben oder sie sogar über die adb-Befehlszeile aktivieren? – frangulyan

+0

@frangulyan: "bedeutet dies, dass andere Apps diese Funktion aufrufen können, indem sie meine Empfängerkomponente angeben" - gewöhnliche Android SDK-Apps können das nicht. System-Apps, Apps auf gerooteten Geräten usw. könnten. "Aktivieren Sie es sogar über die ADB-Befehlszeile?" -- Ich denke schon. IMHO, das sollte ziemlich weit unten auf Ihrer Liste der Bedenken sein. – CommonsWare

+3

Spät zur Party, ich weiß, aber für zukünftige Referenz 'SetComponentEnabledSetting()' funktioniert nicht zuverlässig für AppWidgets auf allen Android-Versionen. Fehlerbericht ist hier: https://issuetracker.google.com/issues/36914010 – String

Verwandte Themen