4

質問:プログラムで私が提供するホームスクリーンウィジェットのいくつかを有効にする方法はありますか?たとえば、「プレミアム」ウィジェットを持っていて、支払い後にのみアクセスできるようにしますか?Android:プログラムウィジェットを有効にする/無効にする

<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> 

ことができますが、また、理論放送受信機に:Androidのよう


は、1つのアプリで来ウィジェットがあることをシステムに伝えるためにマニフェストに放送受信機を追加する必要があります、と言う docsプログラムで追加することができるので、ウィジェットは後で実行時に登録できますか?

答えて

4

あなたは、ユーザーが行う何かが(例えば、アップ支払う)する場合、実行時にそれを有効にするPackageManagersetComponentEnabledSetting()を使用し、マニフェスト内のアプリウィジェットの<receiver>要素にandroid:enabled="false"を持つことができます。

しかし、新しい潜在的なアプリウィジェットプロバイダがあることをホームスクリーンが認識する前に再起動する必要がある可能性があります。

+0

ありがとうございます!これは簡単な質問です:これは、他のアプリがこの機能を呼び出して、受信機コンポーネントを指定したり、それをadbコマンドラインから有効にできることを意味しますか? – frangulyan

+0

@frangulyan: "これは、他のアプリが自分の受信機コンポーネントを指定するこの関数を呼び出せることを意味します" - 通常のAndroid SDKアプリではできません。システムアプリ、ルートデバイス上のアプリなどがあります。 "それはadbコマンドラインからも有効にしますか?" - 私はそう思う。 IMHO、それはあなたの懸念事項のリストからかなり離れているはずです。 – CommonsWare

+3

私は知っていますが、今後のリファレンスでは、すべてのAndroidバージョンのAppWidgetsで 'setComponentEnabledSetting()'が確実に動作しません。バグレポートはこちら:https://issuetracker.google.com/issues/36914010 – String

関連する問題