Androidのウィジェットをホーム画面に置く直前に表示されるウィジェット一覧画面。
ここへ表示の切り替え方法について備忘録です。
どの画面での表示の切り替えなのか表現が難しい。。
なんて言えばいいんでしょ??
うまい言い方あったら誰か教えでください。
ホームアプリにもよるが以下の画面のことです。
ホーム画面表示
↓
ホーム画面の開いている場所を長押し
↓
追加/ウィジェットを選択
↓
ウィジェット一覧が表示 ← [この画面のこと!]
↓
ウィジェット選択
↓
ホーム画面にウィジェット配置
ホームアプリによっては
ドロワー表示
↓
ウィジェット一覧表示 ← [この画面のこと!]
↓
ウィジェット選択
↓
ホームにウィジェット配置
となります。
この「ウィジェット一覧表示」への表示の有効/無効を切り替える方法です。
◆目標
AndroidManifest.xmlに複数定義されているウィジェット(receiver)を
Activityから有効/無効を切り替える。
◆方法
以下のようなウィジェットがあるとして
ActivityからはPackageManagerを使って切り替えます。
android:enabled=”true”の値をいじることで有効/無効を切り替えられます。
以下のようなメソッドを作っておいて
package com.hoge; import.. public class MainActivity extends Activity { ... private Context mContext; ... private void setEnabled(String className,boolean bool) { PackageManager packageManager = mContext.getPackageManager(); if(bool){ packageManager.setComponentEnabledSetting(new ComponentName(mContext, className), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); }else{ packageManager.setComponentEnabledSetting(new ComponentName(mContext, className), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } } }
※mContextにはどっかでContextを代入しておいてください。onCreateとかで。
この場合thisでもいいか。
ポイントはMainActivityの方の17~19、21~23行目。
setComponentEnabledSettingで第二引数に
PackageManager.COMPONENT_ENABLED_STATE_ENABLED → 表示される。
PackageManager.COMPONENT_ENABLED_STATE_DISABLED → 非表示。
ってとこですね。
あとはボタンなりなんなりお好きな場所から呼び出してあげればOKです。
setEnabled("com.hoge.WidgetProvider1x1",false);
これでWidgetProvider1x1はリストから消え去りました。