ウィジェットプロバイダのリストを表示するのではなく、私がウィジェットを選択してからウィジェットを設定させ、すべてのウィジェットプロバイダを手動で読み込み、 ユーザーがこのようなアイコンをドロップするとすぐに、このウィジェットを作成して設定します。これはどうすればいいですか?コメント既知のAppWidgetProviderInfoを使用してウィジェットを作成する
// 1) get a list of all app widget providers
List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
// 2) Display the list to the user and let him select a widget provider => done via custom UI
// 3) handle the user selected widget and create it
// 3.1) create new widget id
int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
// 3.2) configure widget
// ??? How do I do this now? appWidgetInfo.configure = null, so I can't use this as I normally would do it
// 4) Save the appWidgetId or delete it again depending on if the user finished the setup or cancelled it
通常のアプローチと
コード(私のユースケースのために重要ではありませんが、一般的にそれがどのように動作するかを説明)
- は、ウィジェットIDを作成し、
AppWidgetManager.ACTION_APPWIDGET_PICK
を使用しますユーザーがウィジェットを選択できるようにする意図 - を選択した後、データを
AppWidgetManager.ACTION_APPWIDGET_CONFIGURE
に渡します(ユーザーがセットアップをキャンセルした場合または削除)私のカスタムデータにウィジェットIDを保存し、セットアップ後intent.setComponent(appWidgetInfo.configure);
- を意図して使用し、
- =ウィジェットを表示し、更新するために、IDを使用>私の場合のために、これはあります
質問...細かい作業
私は、次の使用できるように、私は、configureのフィールドで有効なAppWidgetProviderInfo
= nullを取得するにはどうすればよい:
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
// appWidgetInfo.configure is null for appWidgetInfo received from mAppWidgetManager.getInstalledProviders()
// it is not if the appWidgetInfo is received via the AppWidgetManager.ACTION_APPWIDGET_PICK intent...
intent.setComponent(appWidgetInfo.configure);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
activity.startActivityForResult(intent, WIDGET_CONFIGURE_REQUEST_CODE);
0123! これに代わる方法がありますか?
は私が何とか手動AppWidgetProviderInfo
でウィジェットを作成し、mAppWidgetManager.getAppWidgetInfo(appWidgetId);
との情報を再取得し、これは私がAppWidgetManager.ACTION_APPWIDGET_PICK
意図を使用する場合に発生するようですと、私は満たされconfigure
フィールドを持つことになりますしなければならないと思いますが、私は私を知りません手動でこれを行う...