2010-11-25 3 views
7

私はAndroid上で利用可能なホーム画面ウィジェットのリストを読もうとしています。 私はインストールされているウィジェットリストの入手方法は?

Intent myIntent = new Intent(Intent.ACTION_MAIN, null); 
myIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> appsInfo = MyActivity.getPackageManager().queryIntentActivities(myIntent, 0); 

を使用して使用可能なアプリケーションのリストを使用してグリッドを移入し、各ResolveInfoを反復処理よりもすることができます。
利用可能なホーム画面ウィジェットで同じことを行うにはどうすればよいですか?私は画面に触れ続け、表示されているポップアップから 'ウィジェット'を選択して表示される同じリストでグリッドを設定したいと思います。

答えて

6

AppWidgetManagergetInstalledProviders()を呼び出します。

CommonsWareによって示唆されるように
+0

AppWidgetProviderInfoはどうもありがとうございまし参照するために、抽出することができます!これはそれです! – lorenzoff

+0

これは、いつかandroid.os.TransactionTooLargeExceptionをスローします。私はなぜうまくいかないのですか? –

+1

@Bobbobbington:デバイスに多くの 'AppWidgetProviders'がある場合、それは起こります。プロセスからのすべての同時IPC操作には1MBの制限があります。したがって、 'getInstalledProviders()'の結果が1MBを超えると、この例外が発生します。 'getInstalledProviders()'リストがもっと小さくても、あなたのプロセス内の他のIPCが実行されている間に呼び出された場合(そして1MBの制限の一部を消費する場合)、この例外が発生します。 – CommonsWare

9

、ここでウィジェット

AppWidgetManager manager = AppWidgetManager.getInstance(this); 
List<AppWidgetProviderInfo> infoList = manager.getInstalledProviders(); 
for (AppWidgetProviderInfo info : infoList) { 
    Log.d(TAG, "Name: " + info.label); 
    Log.d(TAG, "Provider Name: " + info.provider); 
    Log.d(TAG, "Configure Name: " + info.configure); 
} 

他の様々な値のリストを抽出するための作業コードは、複数の基準

+0

これで、関連付けられたウィジェットのアイコンを取得することはできますか? –

+0

@RandyFreakはい、これからアイコンを抽出できます –

関連する問題